From 2a3fd3165ba0ac426295682dd3b47de31638dc3a Mon Sep 17 00:00:00 2001 From: edg-l Date: Sun, 18 Feb 2024 09:00:32 +0000 Subject: [PATCH] deploy: ccc70b91226e08da93c9cb7e339b7bf92f467d25 --- edlang_ast/struct.StructInitExpr.html | 4 +- .../struct.BinaryFirstLvlOpParser.html | 2 +- .../struct.BinarySecondLvlOpParser.html | 2 +- .../struct.BinaryThirdLvlOpParser.html | 2 +- .../grammar/grammar/struct.ModuleParser.html | 2 +- .../grammar/struct.PathSegmentsParser.html | 2 +- .../grammar/grammar/struct.UnaryOpParser.html | 2 +- .../grammar/grammar/trait.__ToTriple.html | 8 +- regex_syntax/ast/enum.ErrorKind.html | 2 +- regex_syntax/ast/struct.Error.html | 2 +- regex_syntax/enum.Error.html | 2 +- regex_syntax/hir/enum.ErrorKind.html | 2 +- regex_syntax/struct.UnicodeWordError.html | 2 +- search-index.js | 2 +- src/edlang_ast/lib.rs.html | 2 +- src/edlang_ir/lib.rs.html | 4 +- src/edlang_lowering/lib.rs.html | 4 +- .../out/grammar.rs.html | 102194 +++++++++------ trait.impl/core/clone/trait.Clone.js | 2 +- trait.impl/core/cmp/trait.Eq.js | 2 +- trait.impl/core/cmp/trait.Ord.js | 2 +- trait.impl/core/cmp/trait.PartialEq.js | 2 +- trait.impl/core/cmp/trait.PartialOrd.js | 2 +- trait.impl/core/convert/trait.From.js | 2 +- trait.impl/core/default/trait.Default.js | 2 +- trait.impl/core/error/trait.Error.js | 2 +- trait.impl/core/fmt/trait.Debug.js | 2 +- trait.impl/core/fmt/trait.Display.js | 2 +- .../iter/traits/iterator/trait.Iterator.js | 2 +- trait.impl/core/marker/trait.Copy.js | 2 +- trait.impl/core/marker/trait.StructuralEq.js | 2 +- .../core/marker/trait.StructuralPartialEq.js | 2 +- trait.impl/core/ops/drop/trait.Drop.js | 2 +- type.impl/core/result/enum.Result.js | 2 +- 34 files changed, 63454 insertions(+), 38818 deletions(-) diff --git a/edlang_ast/struct.StructInitExpr.html b/edlang_ast/struct.StructInitExpr.html index d8765884a3..0473540576 100644 --- a/edlang_ast/struct.StructInitExpr.html +++ b/edlang_ast/struct.StructInitExpr.html @@ -1,9 +1,9 @@ StructInitExpr in edlang_ast - Rust
pub struct StructInitExpr {
-    pub name: Ident,
+    pub name: Type,
     pub fields: BTreeMap<Ident, StructInitField>,
     pub span: Span,
-}

Fields§

§name: Ident§fields: BTreeMap<Ident, StructInitField>§span: Span

Trait Implementations§

source§

impl Clone for StructInitExpr

source§

fn clone(&self) -> StructInitExpr

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for StructInitExpr

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for StructInitExpr

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +}

Fields§

§name: Type§fields: BTreeMap<Ident, StructInitField>§span: Span

Trait Implementations§

source§

impl Clone for StructInitExpr

source§

fn clone(&self) -> StructInitExpr

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for StructInitExpr

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for StructInitExpr

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Ord for StructInitExpr

source§

fn cmp(&self, other: &StructInitExpr) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where diff --git a/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html b/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html index 78fa640664..80df1c9961 100644 --- a/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html +++ b/edlang_parser/grammar/grammar/struct.BinaryFirstLvlOpParser.html @@ -1,5 +1,5 @@ BinaryFirstLvlOpParser in edlang_parser::grammar::grammar - Rust -
pub struct BinaryFirstLvlOpParser { /* private fields */ }

Implementations§

source§

impl BinaryFirstLvlOpParser

source

pub fn new() -> BinaryFirstLvlOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( +
pub struct BinaryFirstLvlOpParser { /* private fields */ }

Implementations§

source§

impl BinaryFirstLvlOpParser

source

pub fn new() -> BinaryFirstLvlOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, __tokens0: __TOKENS ) -> Result<BinaryOp, ParseError<usize, Token, LexicalError>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html b/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html index d6f39ac2f2..45d529db95 100644 --- a/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html +++ b/edlang_parser/grammar/grammar/struct.BinarySecondLvlOpParser.html @@ -1,5 +1,5 @@ BinarySecondLvlOpParser in edlang_parser::grammar::grammar - Rust -
pub struct BinarySecondLvlOpParser { /* private fields */ }

Implementations§

source§

impl BinarySecondLvlOpParser

source

pub fn new() -> BinarySecondLvlOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( +
pub struct BinarySecondLvlOpParser { /* private fields */ }

Implementations§

source§

impl BinarySecondLvlOpParser

source

pub fn new() -> BinarySecondLvlOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, __tokens0: __TOKENS ) -> Result<BinaryOp, ParseError<usize, Token, LexicalError>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html b/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html index 24f8ae400d..455a18633c 100644 --- a/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html +++ b/edlang_parser/grammar/grammar/struct.BinaryThirdLvlOpParser.html @@ -1,5 +1,5 @@ BinaryThirdLvlOpParser in edlang_parser::grammar::grammar - Rust -
pub struct BinaryThirdLvlOpParser { /* private fields */ }

Implementations§

source§

impl BinaryThirdLvlOpParser

source

pub fn new() -> BinaryThirdLvlOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( +
pub struct BinaryThirdLvlOpParser { /* private fields */ }

Implementations§

source§

impl BinaryThirdLvlOpParser

source

pub fn new() -> BinaryThirdLvlOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, __tokens0: __TOKENS ) -> Result<BinaryOp, ParseError<usize, Token, LexicalError>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/edlang_parser/grammar/grammar/struct.ModuleParser.html b/edlang_parser/grammar/grammar/struct.ModuleParser.html index cbec76f3e3..f5d7bcb6cc 100644 --- a/edlang_parser/grammar/grammar/struct.ModuleParser.html +++ b/edlang_parser/grammar/grammar/struct.ModuleParser.html @@ -1,5 +1,5 @@ ModuleParser in edlang_parser::grammar::grammar - Rust -
pub struct ModuleParser { /* private fields */ }

Implementations§

source§

impl ModuleParser

source

pub fn new() -> ModuleParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( +
pub struct ModuleParser { /* private fields */ }

Implementations§

source§

impl ModuleParser

source

pub fn new() -> ModuleParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, __tokens0: __TOKENS ) -> Result<Module, ParseError<usize, Token, LexicalError>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html b/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html index 5ff510d3a3..40359123ab 100644 --- a/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html +++ b/edlang_parser/grammar/grammar/struct.PathSegmentsParser.html @@ -1,5 +1,5 @@ PathSegmentsParser in edlang_parser::grammar::grammar - Rust -
pub struct PathSegmentsParser { /* private fields */ }

Implementations§

source§

impl PathSegmentsParser

source

pub fn new() -> PathSegmentsParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( +
pub struct PathSegmentsParser { /* private fields */ }

Implementations§

source§

impl PathSegmentsParser

source

pub fn new() -> PathSegmentsParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, __tokens0: __TOKENS ) -> Result<Vec<PathSegment>, ParseError<usize, Token, LexicalError>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/edlang_parser/grammar/grammar/struct.UnaryOpParser.html b/edlang_parser/grammar/grammar/struct.UnaryOpParser.html index 9cf7e26c6d..33e7e7dbc5 100644 --- a/edlang_parser/grammar/grammar/struct.UnaryOpParser.html +++ b/edlang_parser/grammar/grammar/struct.UnaryOpParser.html @@ -1,5 +1,5 @@ UnaryOpParser in edlang_parser::grammar::grammar - Rust -
pub struct UnaryOpParser { /* private fields */ }

Implementations§

source§

impl UnaryOpParser

source

pub fn new() -> UnaryOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( +
pub struct UnaryOpParser { /* private fields */ }

Implementations§

source§

impl UnaryOpParser

source

pub fn new() -> UnaryOpParser

source

pub fn parse<__TOKEN: __ToTriple, __TOKENS: IntoIterator<Item = __TOKEN>>( &self, __tokens0: __TOKENS ) -> Result<UnaryOp, ParseError<usize, Token, LexicalError>>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where diff --git a/edlang_parser/grammar/grammar/trait.__ToTriple.html b/edlang_parser/grammar/grammar/trait.__ToTriple.html index f6c157ca01..9f980b6f3a 100644 --- a/edlang_parser/grammar/grammar/trait.__ToTriple.html +++ b/edlang_parser/grammar/grammar/trait.__ToTriple.html @@ -1,13 +1,13 @@ __ToTriple in edlang_parser::grammar::grammar - Rust -
pub trait __ToTriple {
+    
pub trait __ToTriple {
     // Required method
     fn to_triple(
         value: Self
     ) -> Result<(usize, Token, usize), ParseError<usize, Token, LexicalError>>;
-}

Required Methods§

Required Methods§

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl __ToTriple for (usize, Token, usize)

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl __ToTriple for (usize, Token, usize)

source§

impl __ToTriple for Result<(usize, Token, usize), LexicalError>

source§

impl __ToTriple for Result<(usize, Token, usize), LexicalError>

Implementors§

\ No newline at end of file diff --git a/regex_syntax/ast/enum.ErrorKind.html b/regex_syntax/ast/enum.ErrorKind.html index 9844858de3..613ef3fbe6 100644 --- a/regex_syntax/ast/enum.ErrorKind.html +++ b/regex_syntax/ast/enum.ErrorKind.html @@ -115,7 +115,7 @@ not necessarily limited to, (?=re), (?!re), (?<=re) and (?<!re). Note that all of these syntaxes are otherwise invalid; this error is used to improve the user experience.

-

Trait Implementations§

source§

impl Clone for ErrorKind

source§

fn clone(&self) -> ErrorKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ErrorKind

source§

fn eq(&self, other: &ErrorKind) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for ErrorKind

source§

fn clone(&self) -> ErrorKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ErrorKind

source§

fn eq(&self, other: &ErrorKind) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for ErrorKind

source§

impl StructuralEq for ErrorKind

source§

impl StructuralPartialEq for ErrorKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/regex_syntax/ast/struct.Error.html b/regex_syntax/ast/struct.Error.html index 5ef587100d..e3ac458ac1 100644 --- a/regex_syntax/ast/struct.Error.html +++ b/regex_syntax/ast/struct.Error.html @@ -14,7 +14,7 @@ regular expression. For example, “duplicate” errors will have the main error position set to the duplicate occurrence while its auxiliary span will be set to the initial occurrence.

-

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Error

Converts to this type from the input type.
source§

impl PartialEq for Error

source§

fn eq(&self, other: &Error) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Error

Converts to this type from the input type.
source§

impl PartialEq for Error

source§

fn eq(&self, other: &Error) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Error

source§

impl StructuralEq for Error

source§

impl StructuralPartialEq for Error

Auto Trait Implementations§

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/regex_syntax/enum.Error.html b/regex_syntax/enum.Error.html index 58d96e5db3..8e4ad1a403 100644 --- a/regex_syntax/enum.Error.html +++ b/regex_syntax/enum.Error.html @@ -9,7 +9,7 @@ syntax (AST).

§

Translate(Error)

An error that occurred while translating abstract syntax into a high level intermediate representation (HIR).

-

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Error

Converts to this type from the input type.
source§

impl PartialEq for Error

source§

fn eq(&self, other: &Error) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for Error

source§

fn clone(&self) -> Error

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for Error

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for Error

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Error

Converts to this type from the input type.
source§

impl From<Error> for Error

source§

fn from(err: Error) -> Error

Converts to this type from the input type.
source§

impl PartialEq for Error

source§

fn eq(&self, other: &Error) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for Error

source§

impl StructuralEq for Error

source§

impl StructuralPartialEq for Error

Auto Trait Implementations§

§

impl RefUnwindSafe for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnwindSafe for Error

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/regex_syntax/hir/enum.ErrorKind.html b/regex_syntax/hir/enum.ErrorKind.html index 1acce24ed0..d2e1c0cf84 100644 --- a/regex_syntax/hir/enum.ErrorKind.html +++ b/regex_syntax/hir/enum.ErrorKind.html @@ -26,7 +26,7 @@
§

UnicodeCaseUnavailable

This occurs when the Unicode simple case mapping tables are not available, and the regular expression required Unicode aware case insensitivity.

-

Trait Implementations§

source§

impl Clone for ErrorKind

source§

fn clone(&self) -> ErrorKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ErrorKind

source§

fn eq(&self, other: &ErrorKind) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for ErrorKind

source§

fn clone(&self) -> ErrorKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for ErrorKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for ErrorKind

source§

fn eq(&self, other: &ErrorKind) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for ErrorKind

source§

impl StructuralEq for ErrorKind

source§

impl StructuralPartialEq for ErrorKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where diff --git a/regex_syntax/struct.UnicodeWordError.html b/regex_syntax/struct.UnicodeWordError.html index df4261ff81..06c50985e3 100644 --- a/regex_syntax/struct.UnicodeWordError.html +++ b/regex_syntax/struct.UnicodeWordError.html @@ -3,7 +3,7 @@

This error can occur when the data tables necessary for the Unicode aware Perl character class \w are unavailable. This only occurs when the unicode-perl feature is disabled. (The feature is enabled by default.)

-

Trait Implementations§

source§

impl Debug for UnicodeWordError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for UnicodeWordError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for UnicodeWordError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where +

Trait Implementations§

source§

impl Debug for UnicodeWordError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for UnicodeWordError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for UnicodeWordError

1.30.0 · source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/search-index.js b/search-index.js index 5fb475228e..000575ad07 100644 --- a/search-index.js +++ b/search-index.js @@ -60,7 +60,7 @@ var searchIndex = new Map(JSON.parse('[\ ["quote",{"doc":"github crates-io docs-rs","t":"KKKMMMMMQNNQQNNNNM","n":["IdentFragment","ToTokens","TokenStreamExt","append","append_all","append_separated","append_terminated","fmt","format_ident","into_token_stream","into_token_stream","quote","quote_spanned","span","span","to_token_stream","to_token_stream","to_tokens"],"q":[[0,"quote"],[18,"proc_macro2"],[19,"core::convert"],[20,"core::iter::traits::collect"],[21,"core::fmt"],[22,"core::fmt"]],"d":["Specialized formatting trait used by format_ident!.","Types that can be interpolated inside a quote! invocation.","TokenStream extension trait with methods for appending …","For use by ToTokens implementations.","For use by ToTokens implementations.","For use by ToTokens implementations.","For use by ToTokens implementations.","Format this value as an identifier fragment.","Formatting macro for constructing Idents.","Convert self directly into a TokenStream object.","Convert self directly into a TokenStream object.","The whole point.","Same as quote!, but applies a given span to all tokens …","Span associated with this IdentFragment.","Span associated with this IdentFragment.","Convert self directly into a TokenStream object.","Convert self directly into a TokenStream object.","Write self to the given TokenStream."],"i":[0,0,0,1,1,1,1,7,0,6,6,0,0,7,7,6,6,6],"f":[0,0,0,[[1,-1],2,[[4,[3]]]],[[1,-1],2,5],[[1,-1,-2],2,5,6],[[1,-1,-2],2,5,6],[[7,8],9],0,[6,10],[6,10],0,0,[7,[[12,[11]]]],[7,[[12,[11]]]],[6,10],[6,10],[[6,10],2]],"c":[],"p":[[10,"TokenStreamExt",0],[1,"tuple"],[6,"TokenTree",18],[10,"Into",19],[10,"IntoIterator",20],[10,"ToTokens",0],[10,"IdentFragment",0],[5,"Formatter",21],[8,"Result",21],[5,"TokenStream",18],[5,"Span",18],[6,"Option",22]],"b":[]}],\ ["regex",{"doc":"This crate provides routines for searching strings for …","t":"FFFFPGFFFFFFFKFFFFFFFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFFFFFFFKFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["CaptureLocations","CaptureMatches","CaptureNames","Captures","CompiledTooBig","Error","Match","Matches","NoExpand","Regex","RegexBuilder","RegexSet","RegexSetBuilder","Replacer","ReplacerRef","SetMatches","SetMatchesIntoIter","SetMatchesIter","Split","SplitN","SubCaptureMatches","Syntax","as_str","as_str","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","by_ref","by_ref","bytes","capture_locations","capture_names","captures","captures_at","captures_iter","captures_len","captures_read","captures_read_at","case_insensitive","case_insensitive","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","count","count","count","crlf","crlf","default","description","dfa_size_limit","dfa_size_limit","dot_matches_new_line","dot_matches_new_line","empty","end","eq","eq","escape","expand","extract","find","find_at","find_iter","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","get","get","ignore_whitespace","ignore_whitespace","index","index","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","is_empty","is_empty","is_match","is_match","is_match_at","is_match_at","iter","iter","len","len","len","len","len","line_terminator","line_terminator","matched","matched_any","matches","matches_at","multi_line","multi_line","name","nest_limit","nest_limit","new","new","new","new","next","next","next","next","next","next","next","next","next_back","next_back","no_expansion","no_expansion","no_expansion","no_expansion","octal","octal","patterns","range","replace","replace_all","replace_append","replace_append","replace_append","replacen","shortest_match","shortest_match_at","size_hint","size_hint","size_hint","size_hint","size_hint","size_limit","size_limit","split","splitn","start","static_captures_len","swap_greed","swap_greed","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unicode","unicode","CaptureLocations","CaptureMatches","CaptureNames","Captures","Match","Matches","NoExpand","Regex","RegexBuilder","RegexSet","RegexSetBuilder","Replacer","ReplacerRef","SetMatches","SetMatchesIntoIter","SetMatchesIter","Split","SplitN","SubCaptureMatches","as_bytes","as_str","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","by_ref","by_ref","capture_locations","capture_names","captures","captures_at","captures_iter","captures_len","captures_read","captures_read_at","case_insensitive","case_insensitive","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","count","count","count","count","crlf","crlf","default","dfa_size_limit","dfa_size_limit","dot_matches_new_line","dot_matches_new_line","empty","end","eq","expand","extract","find","find_at","find_iter","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_str","get","get","ignore_whitespace","ignore_whitespace","index","index","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","is_empty","is_empty","is_match","is_match","is_match_at","is_match_at","iter","iter","len","len","len","len","len","line_terminator","line_terminator","matched","matched_any","matches","matches_at","multi_line","multi_line","name","nest_limit","nest_limit","new","new","new","new","next","next","next","next","next","next","next","next","next_back","next_back","no_expansion","no_expansion","no_expansion","no_expansion","octal","octal","patterns","range","replace","replace_all","replace_append","replace_append","replace_append","replacen","shortest_match","shortest_match_at","size_hint","size_hint","size_hint","size_hint","size_hint","size_limit","size_limit","split","splitn","start","static_captures_len","swap_greed","swap_greed","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unicode","unicode"],"q":[[0,"regex"],[341,"regex::bytes"],[662,"core::result"],[663,"core::option"],[664,"alloc::string"],[665,"core::fmt"],[666,"core::fmt"],[667,"core::convert"],[668,"core::iter::traits::collect"],[669,"alloc::borrow"],[670,"core::ops::range"],[671,"core::any"],[672,"alloc::vec"]],"d":["A low level representation of the byte offsets of each …","An iterator over all non-overlapping capture matches in a …","An iterator over the names of all capture groups in a …","Represents the capture groups for a single match.","The compiled program exceeded the set size limit. The …","An error that occurred during parsing or compiling a …","Represents a single match of a regex in a haystack.","An iterator over all non-overlapping matches in a haystack.","A helper type for forcing literal string replacement.","A compiled regular expression for searching Unicode …","A configurable builder for a Regex.","Match multiple, possibly overlapping, regexes in a single …","A configurable builder for a RegexSet.","A trait for types that can be used to replace matches in a …","A by-reference adaptor for a Replacer.","A set of matches returned by a regex set.","An owned iterator over the set of matches from a regex set.","A borrowed iterator over the set of matches from a regex …","An iterator over all substrings delimited by a regex match.","An iterator over at most N substrings delimited by a regex …","An iterator over all group matches in a Captures value.","A syntax error.","Returns the original string of this regex.","Returns the substring of the haystack that matched.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Compiles the pattern given to RegexBuilder::new with the …","Compiles the patterns given to RegexSetBuilder::new with …","Returns a type that implements Replacer, but that borrows …","Returns a type that implements Replacer, but that borrows …","Search for regex matches in &[u8] haystacks.","Returns a fresh allocated set of capture locations that can","Returns an iterator over the capture names in this regex.","This routine searches for the first match of this regex in …","Returns the same as Regex::captures, but starts the search …","Returns an iterator that yields successive non-overlapping …","Returns the number of captures groups in this regex.","This is like Regex::captures, but writes the byte offsets …","Returns the same as Regex::captures_read, but starts the …","This configures whether to enable case insensitive …","This configures whether to enable case insensitive …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This configures CRLF mode for the entire pattern.","This configures CRLF mode for all of the patterns.","","","Set the approximate capacity, in bytes, of the cache of …","Set the approximate capacity, in bytes, of the cache of …","This configures dot-matches-new-line mode for the entire …","This configures dot-matches-new-line mode for the entire …","Create a new empty regex set.","Returns the byte offset of the end of the match in the …","","","Escapes all regular expression meta characters in pattern.","Expands all instances of $ref in replacement to the …","This is a convenience routine for extracting the substrings","This routine searches for the first match of this regex in …","Returns the same as Regex::find, but starts the search at …","Returns an iterator that yields successive non-overlapping …","","","","","","Shows the original regular expression.","Shows the original regular expression.","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Attempts to parse a string into a regular expression","Returns the Match associated with the capture group at …","Returns the start and end byte offsets of the capture …","This configures verbose mode for the entire pattern.","This configures verbose mode for all of the patterns.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","Returns true if and only if this match has a length of …","Returns true if this set contains no regexes.","Returns true if and only if there is a match for the regex …","Returns true if and only if one of the regexes in this set …","Returns the same as Regex::is_match, but starts the search …","Returns true if and only if one of the regexes in this set …","Returns an iterator over all capture groups. This includes …","Returns an iterator over the indices of the regexes that …","Returns the total number of capture groups. This includes …","Returns the length, in bytes, of this match.","Returns the total number of capture groups (even if they …","Returns the total number of regexes in this set.","The total number of regexes in the set that created these …","Configures the line terminator to be used by the regex.","Configures the line terminator to be used by the regex.","Whether the regex at the given index matched.","Whether this set contains any matches.","Returns the set of regexes that match in the given …","Returns the set of regexes that match in the given …","This configures multi-line mode for the entire pattern.","This configures multi-line mode for all of the patterns.","Returns the Match associated with the capture group named …","Set the nesting limit for this parser.","Set the nesting limit for this parser.","Create a new builder with a default configuration for the …","Create a new builder with a default configuration for the …","Compiles a regular expression. Once compiled, it can be …","Create a new regex set with the given regular expressions.","","","","","","","","","","","Return a fixed unchanging replacement string.","Return a fixed unchanging replacement string.","","","This configures octal mode for the entire pattern.","This configures octal mode for all of the patterns.","Returns the regex patterns that this regex set was …","Returns the range over the starting and ending byte …","Replaces the leftmost-first match in the given haystack …","Replaces all non-overlapping matches in the haystack with …","Appends possibly empty data to dst to replace the current …","","","Replaces at most limit non-overlapping matches in the …","Returns the end byte offset of the first match in the …","Returns the same as Regex::shortest_match, but starts the …","","","","","","Sets the approximate size limit, in bytes, of the compiled …","Sets the approximate size limit, in bytes, of the compiled …","Returns an iterator of substrings of the haystack given, …","Returns an iterator of at most limit substrings of the …","Returns the byte offset of the start of the match in the …","Returns the total number of capturing groups that appear …","This configures swap-greed mode for the entire pattern.","This configures swap-greed mode for all of the patterns.","","","","","","","","","","","","","","","","","","","Attempts to parse a string into a regular expression","","Attempts to parse a string into a regular expression","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This configures Unicode mode for the entire pattern.","This configures Unicode mode for the all of the patterns.","A low level representation of the byte offsets of each …","An iterator over all non-overlapping capture matches in a …","An iterator over the names of all capture groups in a …","Represents the capture groups for a single match.","Represents a single match of a regex in a haystack.","An iterator over all non-overlapping matches in a haystack.","A helper type for forcing literal string replacement.","A compiled regular expression for searching Unicode …","A configurable builder for a Regex.","Match multiple, possibly overlapping, regexes in a single …","A configurable builder for a RegexSet.","A trait for types that can be used to replace matches in a …","A by-reference adaptor for a Replacer.","A set of matches returned by a regex set.","An owned iterator over the set of matches from a regex set.","A borrowed iterator over the set of matches from a regex …","An iterator over all substrings delimited by a regex match.","An iterator over at most N substrings delimited by a regex …","An iterator over all group matches in a Captures value.","Returns the substring of the haystack that matched.","Returns the original string of this regex.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Compiles the pattern given to RegexBuilder::new with the …","Compiles the patterns given to RegexSetBuilder::new with …","Returns a type that implements Replacer, but that borrows …","Returns a type that implements Replacer, but that borrows …","Returns a fresh allocated set of capture locations that can","Returns an iterator over the capture names in this regex.","This routine searches for the first match of this regex in …","Returns the same as Regex::captures, but starts the search …","Returns an iterator that yields successive non-overlapping …","Returns the number of captures groups in this regex.","This is like Regex::captures, but writes the byte offsets …","Returns the same as Regex::captures_read, but starts the …","This configures whether to enable case insensitive …","This configures whether to enable case insensitive …","","","","","","","","","","","","","","","","","","","","","","","","","","","This configures CRLF mode for the entire pattern.","This configures CRLF mode for all of the patterns.","","Set the approximate capacity, in bytes, of the cache of …","Set the approximate capacity, in bytes, of the cache of …","This configures dot-matches-new-line mode for the entire …","This configures dot-matches-new-line mode for the entire …","Create a new empty regex set.","Returns the byte offset of the end of the match in the …","","Expands all instances of $ref in replacement to the …","This is a convenience routine for extracting the substrings","This routine searches for the first match of this regex in …","Returns the same as Regex::find, but starts the search at …","Returns an iterator that yields successive non-overlapping …","","","","Shows the original regular expression.","Shows the original regular expression.","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Attempts to parse a string into a regular expression","Returns the Match associated with the capture group at …","Returns the start and end byte offsets of the capture …","This configures verbose mode for the entire pattern.","This configures verbose mode for all of the patterns.","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","Returns true if and only if this match has a length of …","Returns true if this set contains no regexes.","Returns true if and only if there is a match for the regex …","Returns true if and only if one of the regexes in this set …","Returns the same as Regex::is_match, but starts the search …","Returns true if and only if one of the regexes in this set …","Returns an iterator over all capture groups. This includes …","Returns an iterator over the indices of the regexes that …","Returns the total number of capture groups. This includes …","Returns the length, in bytes, of this match.","Returns the total number of capture groups (even if they …","Returns the total number of regexes in this set.","The total number of regexes in the set that created these …","Configures the line terminator to be used by the regex.","Configures the line terminator to be used by the regex.","Whether the regex at the given index matched.","Whether this set contains any matches.","Returns the set of regexes that match in the given …","Returns the set of regexes that match in the given …","This configures multi-line mode for the entire pattern.","This configures multi-line mode for all of the patterns.","Returns the Match associated with the capture group named …","Set the nesting limit for this parser.","Set the nesting limit for this parser.","Create a new builder with a default configuration for the …","Create a new builder with a default configuration for the …","Compiles a regular expression. Once compiled, it can be …","Create a new regex set with the given regular expressions.","","","","","","","","","","","Return a fixed unchanging replacement byte string.","Return a fixed unchanging replacement byte string.","","","This configures octal mode for the entire pattern.","This configures octal mode for all of the patterns.","Returns the regex patterns that this regex set was …","Returns the range over the starting and ending byte …","Replaces the leftmost-first match in the given haystack …","Replaces all non-overlapping matches in the haystack with …","Appends possibly empty data to dst to replace the current …","","","Replaces at most limit non-overlapping matches in the …","Returns the end byte offset of the first match in the …","Returns the same as shortest_match, but starts the search …","","","","","","Sets the approximate size limit, in bytes, of the compiled …","Sets the approximate size limit, in bytes, of the compiled …","Returns an iterator of substrings of the haystack given, …","Returns an iterator of at most limit substrings of the …","Returns the byte offset of the start of the match in the …","Returns the total number of capturing groups that appear …","This configures swap-greed mode for the entire pattern.","This configures swap-greed mode for all of the patterns.","","","","","","","","","","","","","","","","Attempts to parse a string into a regular expression","","Attempts to parse a string into a regular expression","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","This configures Unicode mode for the entire pattern.","This configures Unicode mode for the all of the patterns."],"i":[0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,13,4,7,5,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,13,4,7,5,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,4,7,9,9,0,1,1,1,1,1,1,1,1,4,7,4,7,5,1,3,11,12,18,19,8,20,21,4,7,5,1,3,11,12,18,19,8,20,21,23,16,12,18,4,7,8,5,4,7,4,7,8,3,5,3,0,13,13,1,1,1,13,4,7,5,5,1,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,13,4,7,5,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,1,13,11,4,7,13,13,13,4,7,5,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,23,16,28,29,12,18,20,20,32,21,3,8,1,8,1,8,13,20,13,3,11,8,20,4,7,20,20,8,8,4,7,13,4,7,4,7,1,8,23,16,28,29,12,18,32,21,32,21,9,9,10,19,4,7,8,3,1,1,9,10,19,1,1,1,29,12,18,32,21,4,7,1,1,3,1,4,7,4,7,5,1,3,11,12,18,19,8,20,21,5,1,13,4,7,5,1,1,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,13,4,7,5,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,13,4,7,5,1,3,11,23,16,28,29,12,18,10,19,8,20,32,21,4,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,42,43,51,44,45,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,51,44,45,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,44,45,47,47,43,43,43,43,43,43,43,43,44,45,44,45,43,42,49,50,53,54,46,55,56,44,45,43,42,49,50,53,54,46,55,56,57,52,50,53,44,45,46,44,45,44,45,46,42,42,51,51,43,43,43,51,44,45,43,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,51,44,45,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,43,51,49,44,45,51,51,51,44,45,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,57,52,59,60,50,53,55,55,61,56,42,46,43,46,43,46,51,55,51,42,49,46,55,44,45,55,55,46,46,44,45,51,44,45,44,45,43,46,57,52,59,60,50,53,61,56,61,56,47,47,48,54,44,45,46,42,43,43,47,48,54,43,43,43,60,50,53,61,56,44,45,43,43,42,43,44,45,44,45,43,42,49,50,53,54,46,55,56,43,51,44,45,43,43,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,51,44,45,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,51,44,45,43,42,49,57,52,59,60,50,53,48,54,46,55,61,56,44,45],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1,2],[3,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,[[6,[1,5]]]],[7,[[6,[8,5]]]],[9,[[10,[9]]]],[9,[[10,[9]]]],0,[1,11],[1,12],[[1,2],[[14,[13]]]],[[1,2,15],[[14,[13]]]],[[1,2],16],[1,15],[[1,11,2],[[14,[3]]]],[[1,11,2,15],[[14,[3]]]],[[4,17],4],[[7,17],7],[4,4],[7,7],[5,5],[1,1],[3,3],[11,11],[12,12],[18,18],[19,19],[8,8],[20,20],[21,21],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[23,15],[16,15],[12,15],[18,15],[[4,17],4],[[7,17],7],[[],8],[5,2],[[4,15],4],[[7,15],7],[[4,17],4],[[7,17],7],[[],8],[3,15],[[5,5],17],[[3,3],17],[2,24],[[13,2,24],22],[13,[[22,[2,[25,[2]]]]]],[[1,2],[[14,[3]]]],[[1,2,15],[[14,[3]]]],[[1,2],23],[[13,26],27],[[4,26],27],[[7,26],27],[[5,26],27],[[5,26],27],[[1,26],27],[[1,26],27],[[3,26],27],[[11,26],27],[[23,26],27],[[16,26],27],[[28,26],27],[[29,26],27],[[12,26],27],[[18,26],27],[[[10,[-1]],26],27,[30,31]],[[19,26],27],[[8,26],27],[[20,26],27],[[32,26],27],[[21,26],27],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[2,[[6,[1,5]]]],[[13,15],[[14,[3]]]],[[11,15],[[14,[[22,[15,15]]]]]],[[4,17],4],[[7,17],7],[[13,15],2],[[13,2],2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[20,-1,[]],[20,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,17],[8,17],[[1,2],17],[[8,2],17],[[1,2,15],17],[[8,2,15],17],[13,18],[20,21],[13,15],[3,15],[11,15],[8,15],[20,15],[[4,33],4],[[7,33],7],[[20,15],17],[20,17],[[8,2],20],[[8,2,15],20],[[4,17],4],[[7,17],7],[[13,2],[[14,[3]]]],[[4,34],4],[[7,34],7],[2,4],[-2,7,[[35,[2]]],[[37,[],[[36,[-1]]]]]],[2,[[6,[1,5]]]],[-2,[[6,[8,5]]],[[35,[2]]],[[37,[],[[36,[-1]]]]]],[23,[[14,[3]]]],[16,[[14,[13]]]],[28,[[14,[2]]]],[29,[[14,[2]]]],[12,[[14,[[14,[2]]]]]],[18,[[14,[[14,[3]]]]]],[32,[[14,[15]]]],[21,[[14,[15]]]],[32,[[14,[15]]]],[21,[[14,[15]]]],[9,[[14,[[38,[2]]]]]],[9,[[14,[[38,[2]]]]]],[[[10,[-1]]],[[14,[[38,[2]]]]],[9,31]],[19,[[14,[[38,[2]]]]]],[[4,17],4],[[7,17],7],[8,[[39,[24]]]],[3,[[40,[15]]]],[[1,2,-1],[[38,[2]]],9],[[1,2,-1],[[38,[2]]],9],[[9,13,24],22],[[[10,[-1]],13,24],22,[9,31]],[[19,13,24],22],[[1,2,15,-1],[[38,[2]]],9],[[1,2],[[14,[15]]]],[[1,2,15],[[14,[15]]]],[29,[[22,[15,[14,[15]]]]]],[12,[[22,[15,[14,[15]]]]]],[18,[[22,[15,[14,[15]]]]]],[32,[[22,[15,[14,[15]]]]]],[21,[[22,[15,[14,[15]]]]]],[[4,15],4],[[7,15],7],[[1,2],28],[[1,2,15],29],[3,15],[1,[[14,[15]]]],[[4,17],4],[[7,17],7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,24,[]],[-1,24,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[2,[[6,[1,5]]]],[-1,[[6,[-2]]],[],[]],[24,[[6,[1,5]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[[4,17],4],[[7,17],7],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[42,[[39,[33]]]],[43,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[44,[[6,[43,5]]]],[45,[[6,[46,5]]]],[47,[[48,[47]]]],[47,[[48,[47]]]],[43,49],[43,50],[[43,[39,[33]]],[[14,[51]]]],[[43,[39,[33]],15],[[14,[51]]]],[[43,[39,[33]]],52],[43,15],[[43,49,[39,[33]]],[[14,[42]]]],[[43,49,[39,[33]],15],[[14,[42]]]],[[44,17],44],[[45,17],45],[44,44],[45,45],[43,43],[42,42],[49,49],[50,50],[53,53],[54,54],[46,46],[55,55],[56,56],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[[-1,-2],22,[],[]],[57,15],[52,15],[50,15],[53,15],[[44,17],44],[[45,17],45],[[],46],[[44,15],44],[[45,15],45],[[44,17],44],[[45,17],45],[[],46],[42,15],[[42,42],17],[[51,[39,[33]],[58,[33]]],22],[51,[[22,[[39,[33]],[25,[[39,[33]]]]]]]],[[43,[39,[33]]],[[14,[42]]]],[[43,[39,[33]],15],[[14,[42]]]],[[43,[39,[33]]],57],[[51,26],27],[[44,26],27],[[45,26],27],[[43,26],27],[[43,26],27],[[42,26],27],[[49,26],27],[[57,26],27],[[52,26],27],[[59,26],27],[[60,26],27],[[50,26],27],[[53,26],27],[[[48,[-1]],26],27,[30,31]],[[54,26],27],[[46,26],27],[[55,26],27],[[61,26],27],[[56,26],27],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[2,[[6,[43,5]]]],[[51,15],[[14,[42]]]],[[49,15],[[14,[[22,[15,15]]]]]],[[44,17],44],[[45,17],45],[[51,15],[[39,[33]]]],[[51,2],[[39,[33]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[55,-1,[]],[55,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[42,17],[46,17],[[43,[39,[33]]],17],[[46,[39,[33]]],17],[[43,[39,[33]],15],17],[[46,[39,[33]],15],17],[51,53],[55,56],[51,15],[42,15],[49,15],[46,15],[55,15],[[44,33],44],[[45,33],45],[[55,15],17],[55,17],[[46,[39,[33]]],55],[[46,[39,[33]],15],55],[[44,17],44],[[45,17],45],[[51,2],[[14,[42]]]],[[44,34],44],[[45,34],45],[2,44],[-2,45,[[35,[2]]],[[37,[],[[36,[-1]]]]]],[2,[[6,[43,5]]]],[-2,[[6,[46,5]]],[[35,[2]]],[[37,[],[[36,[-1]]]]]],[57,[[14,[42]]]],[52,[[14,[51]]]],[59,[[14,[[39,[33]]]]]],[60,[[14,[[39,[33]]]]]],[50,[[14,[[14,[2]]]]]],[53,[[14,[[14,[42]]]]]],[61,[[14,[15]]]],[56,[[14,[15]]]],[61,[[14,[15]]]],[56,[[14,[15]]]],[47,[[14,[[38,[[39,[33]]]]]]]],[47,[[14,[[38,[[39,[33]]]]]]]],[[[48,[-1]]],[[14,[[38,[[39,[33]]]]]]],[47,31]],[54,[[14,[[38,[[39,[33]]]]]]]],[[44,17],44],[[45,17],45],[46,[[39,[24]]]],[42,[[40,[15]]]],[[43,[39,[33]],-1],[[38,[[39,[33]]]]],47],[[43,[39,[33]],-1],[[38,[[39,[33]]]]],47],[[47,51,[58,[33]]],22],[[[48,[-1]],51,[58,[33]]],22,[47,31]],[[54,51,[58,[33]]],22],[[43,[39,[33]],15,-1],[[38,[[39,[33]]]]],47],[[43,[39,[33]]],[[14,[15]]]],[[43,[39,[33]],15],[[14,[15]]]],[60,[[22,[15,[14,[15]]]]]],[50,[[22,[15,[14,[15]]]]]],[53,[[22,[15,[14,[15]]]]]],[61,[[22,[15,[14,[15]]]]]],[56,[[22,[15,[14,[15]]]]]],[[44,15],44],[[45,15],45],[[43,[39,[33]]],59],[[43,[39,[33]],15],60],[42,15],[43,[[14,[15]]]],[[44,17],44],[[45,17],45],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,24,[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[2,[[6,[43,5]]]],[-1,[[6,[-2]]],[],[]],[24,[[6,[43,5]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[-1,41,[]],[[44,17],44],[[45,17],45]],"c":[],"p":[[5,"Regex",0],[1,"str"],[5,"Match",0],[5,"RegexBuilder",0],[6,"Error",0],[6,"Result",662],[5,"RegexSetBuilder",0],[5,"RegexSet",0],[10,"Replacer",0],[5,"ReplacerRef",0],[5,"CaptureLocations",0],[5,"CaptureNames",0],[5,"Captures",0],[6,"Option",663],[1,"usize"],[5,"CaptureMatches",0],[1,"bool"],[5,"SubCaptureMatches",0],[5,"NoExpand",0],[5,"SetMatches",0],[5,"SetMatchesIter",0],[1,"tuple"],[5,"Matches",0],[5,"String",664],[1,"array"],[5,"Formatter",665],[8,"Result",665],[5,"Split",0],[5,"SplitN",0],[10,"Debug",665],[10,"Sized",666],[5,"SetMatchesIntoIter",0],[1,"u8"],[1,"u32"],[10,"AsRef",667],[17,"Item"],[10,"IntoIterator",668],[6,"Cow",669],[1,"slice"],[5,"Range",670],[5,"TypeId",671],[5,"Match",341],[5,"Regex",341],[5,"RegexBuilder",341],[5,"RegexSetBuilder",341],[5,"RegexSet",341],[10,"Replacer",341],[5,"ReplacerRef",341],[5,"CaptureLocations",341],[5,"CaptureNames",341],[5,"Captures",341],[5,"CaptureMatches",341],[5,"SubCaptureMatches",341],[5,"NoExpand",341],[5,"SetMatches",341],[5,"SetMatchesIter",341],[5,"Matches",341],[5,"Vec",672],[5,"Split",341],[5,"SplitN",341],[5,"SetMatchesIntoIter",341]],"b":[[126,"impl-Debug-for-Error"],[127,"impl-Display-for-Error"],[128,"impl-Debug-for-Regex"],[129,"impl-Display-for-Regex"],[168,"impl-Index%3Cusize%3E-for-Captures%3C\'h%3E"],[169,"impl-Index%3C%26str%3E-for-Captures%3C\'h%3E"],[195,"impl-IntoIterator-for-%26SetMatches"],[196,"impl-IntoIterator-for-SetMatches"],[284,"impl-TryFrom%3C%26str%3E-for-Regex"],[286,"impl-TryFrom%3CString%3E-for-Regex"],[456,"impl-Debug-for-Regex"],[457,"impl-Display-for-Regex"],[495,"impl-Index%3Cusize%3E-for-Captures%3C\'h%3E"],[496,"impl-Index%3C%26str%3E-for-Captures%3C\'h%3E"],[521,"impl-IntoIterator-for-SetMatches"],[522,"impl-IntoIterator-for-%26SetMatches"],[607,"impl-TryFrom%3C%26str%3E-for-Regex"],[609,"impl-TryFrom%3CString%3E-for-Regex"]]}],\ ["regex_automata",{"doc":"This crate exposes a variety of regex engines used by the …","t":"PGPFPFPFFGGPPFFFFPFPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCOOOOOFFFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCPPFFPPFFPFPPPPFPFPFGFPGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNCNNNNNNNNONNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOOOOOFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCCCCCCCCCCCFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNHHFFFFFFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNPPPGFFFPPPFPPPPPPPPPPPPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNTTTTTTFFFTTTFFFFTTTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNFNNNNNNNNNNNNNNNNNNNNNNNNNNNNHHHHNNNNNNNFFFONNNNNNONNNNNNNNNNNNNNNNNNNNNN","n":["All","Anchored","GaveUp","HalfMatch","HaystackTooLong","Input","LeftmostFirst","Match","MatchError","MatchErrorKind","MatchKind","No","Pattern","PatternID","PatternSet","PatternSetInsertError","PatternSetIter","Quit","Span","UnsupportedAnchored","Yes","anchored","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","clear","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","contains","contains","default","default","earliest","end","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","gave_up","get_anchored","get_earliest","get_range","get_span","hash","hash","hash","hash","haystack","haystack_too_long","insert","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","is_anchored","is_char_boundary","is_done","is_empty","is_empty","is_empty","is_full","iter","kind","len","len","len","meta","must","must","new","new","new","new","new","next","next_back","nfa","offset","offset","partial_cmp","pattern","pattern","pattern","quit","range","range","range","set_anchored","set_earliest","set_end","set_range","set_span","set_start","size_hint","span","span","start","start","start","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_insert","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unsupported_anchored","util","byte","len","mode","offset","offset","BuildError","Builder","Cache","CapturesMatches","Config","FindMatches","Regex","Split","SplitN","auto_prefilter","backtrack","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build_from_hir","build_many","build_many_from_hir","builder","byte_classes","captures","captures_iter","captures_len","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","config","configure","count","count","create_cache","create_captures","default","dfa","dfa_size_limit","dfa_state_limit","find","find_iter","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","get_auto_prefilter","get_backtrack","get_byte_classes","get_config","get_dfa","get_dfa_size_limit","get_dfa_state_limit","get_hybrid","get_hybrid_cache_capacity","get_line_terminator","get_match_kind","get_nfa_size_limit","get_onepass","get_onepass_size_limit","get_prefilter","get_utf8_empty","get_which_captures","group_info","hybrid","hybrid_cache_capacity","input","input","input","input","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_iter","is_accelerated","is_match","line_terminator","match_kind","memory_usage","memory_usage","new","new","new","new","new_many","next","next","next","next","nfa_size_limit","onepass","onepass_size_limit","pattern","pattern_len","prefilter","regex","regex","reset","search","search_captures","search_captures_with","search_half","search_half_with","search_slots","search_slots_with","search_with","size_hint","size_limit","source","split","splitn","static_captures_len","syntax","syntax_error","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","utf8_empty","which_captures","which_overlapping_matches","which_overlapping_matches_with","thompson","All","BinaryUnion","BuildError","Builder","ByteRange","Capture","Compiler","Config","Dense","DenseTransitions","Fail","Implicit","Look","Match","NFA","None","PatternIter","Sparse","SparseTransitions","State","Transition","Union","WhichCaptures","add_capture_end","add_capture_start","add_empty","add_fail","add_look","add_match","add_range","add_sparse","add_union","add_union_reverse","always_match","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build","build_from_hir","build_many","build_many_from_hir","byte_classes","captures","clear","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","compiler","config","configure","current_pattern_id","default","default","default","end","eq","eq","eq","eq","finish_pattern","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","get_captures","get_look_matcher","get_look_matcher","get_nfa_size_limit","get_reverse","get_reverse","get_shrink","get_size_limit","get_utf8","get_utf8","get_which_captures","group_info","has_capture","has_empty","hash","into","into","into","into","into","into","into","into","into","into","into","into_iter","is_always_start_anchored","is_any","is_epsilon","is_none","is_reverse","is_utf8","look_matcher","look_matcher","look_set_any","look_set_prefix_any","matches","matches","matches","matches_byte","matches_byte","matches_byte","matches_unit","memory_usage","memory_usage","never_match","new","new","new","new","new_many","next","next","nfa_size_limit","patch","pattern_len","pattern_len","patterns","pikevm","reverse","set_look_matcher","set_reverse","set_size_limit","set_utf8","shrink","size_limit","source","start","start_anchored","start_pattern","start_pattern","start_unanchored","state","states","syntax","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","transitions","transitions","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","utf8","which_captures","alt1","alt2","alternates","group_index","look","next","next","pattern_id","pattern_id","slot","trans","Builder","Cache","CapturesMatches","Config","FindMatches","PikeVM","always_match","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","build_from_nfa","build_many","builder","captures","captures_iter","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","config","configure","create_cache","create_captures","default","find","find_iter","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_config","get_match_kind","get_nfa","get_prefilter","into","into","into","into","into","into","into_iter","into_iter","is_match","match_kind","memory_usage","never_match","new","new","new","new","new_from_nfa","new_many","next","next","pattern_len","prefilter","reset","reset_cache","search","search_slots","syntax","thompson","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","which_overlapping_matches","alphabet","captures","escape","interpolate","iter","lazy","look","pool","prefilter","primitives","start","syntax","wire","ByteClassElements","ByteClassIter","ByteClassRepresentatives","ByteClasses","Unit","alphabet_len","as_eoi","as_u8","as_usize","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","default","elements","empty","eoi","eoi","eq","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","get","get_by_unit","into","into","into","into","into","into_iter","into_iter","into_iter","is_byte","is_eoi","is_singleton","is_word_byte","iter","next","next","next","partial_cmp","representatives","set","singletons","stride2","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","u8","Captures","CapturesPatternIter","GroupInfo","GroupInfoAllNames","GroupInfoError","GroupInfoPatternNames","all","all_group_len","all_names","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","count","count","default","empty","empty","explicit_slot_len","extract","extract_bytes","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","get_group","get_group_by_name","get_match","group_info","group_len","group_len","implicit_slot_len","interpolate_bytes","interpolate_bytes_into","interpolate_string","interpolate_string_into","into","into","into","into","into","into","into_iter","into_iter","into_iter","is_match","iter","matches","memory_usage","new","next","next","next","pattern","pattern_len","pattern_names","set_pattern","size_hint","size_hint","slot","slot_len","slots","slots","slots_mut","source","to_index","to_name","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","DebugByte","DebugHaystack","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","from","from","into","into","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","bytes","string","CapturesIter","HalfMatchesIter","MatchesIter","Searcher","TryCapturesIter","TryHalfMatchesIter","TryMatchesIter","advance","advance_half","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone_into","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","infallible","infallible","infallible","input","input","input","input","input","into","into","into","into","into","into","into","into_captures_iter","into_half_matches_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_iter","into_matches_iter","new","next","next","next","next","next","next","to_owned","try_advance","try_advance_half","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","Lazy","borrow","borrow_mut","deref","fmt","from","get","into","new","try_from","try_into","type_id","End","EndCRLF","EndLF","Look","LookMatcher","LookSet","LookSetIter","Start","StartCRLF","StartLF","UnicodeWordBoundaryError","WordAscii","WordAsciiNegate","WordEndAscii","WordEndHalfAscii","WordEndHalfUnicode","WordEndUnicode","WordStartAscii","WordStartHalfAscii","WordStartHalfUnicode","WordStartUnicode","WordUnicode","WordUnicodeNegate","as_char","as_repr","available","bits","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","check","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","contains","contains_anchor","contains_anchor_crlf","contains_anchor_haystack","contains_anchor_lf","contains_anchor_line","contains_word","contains_word_ascii","contains_word_unicode","default","default","empty","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from_repr","full","get_line_terminator","insert","intersect","into","into","into","into","into","into_iter","is_empty","is_end","is_end_crlf","is_end_lf","is_start","is_start_crlf","is_start_lf","is_word_ascii","is_word_ascii_negate","is_word_end_ascii","is_word_end_half_ascii","is_word_end_half_unicode","is_word_end_unicode","is_word_start_ascii","is_word_start_half_ascii","is_word_start_half_unicode","is_word_start_unicode","is_word_unicode","is_word_unicode_negate","iter","len","matches","matches_set","new","next","read_repr","remove","reversed","set_insert","set_intersect","set_line_terminator","set_remove","set_subtract","set_union","singleton","subtract","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","union","write_repr","Pool","PoolGuard","borrow","borrow","borrow_mut","borrow_mut","deref","deref_mut","fmt","fmt","from","from","get","into","into","new","put","try_from","try_from","try_into","try_into","type_id","type_id","Prefilter","borrow","borrow_mut","clone","clone_into","find","fmt","from","from_hir_prefix","from_hirs_prefix","into","is_fast","max_needle_len","memory_usage","new","prefix","to_owned","try_from","try_into","type_id","LIMIT","LIMIT","LIMIT","MAX","MAX","MAX","NonMaxUsize","PatternID","PatternIDError","SIZE","SIZE","SIZE","SmallIndex","SmallIndexError","StateID","StateIDError","ZERO","ZERO","ZERO","as_i32","as_i32","as_i32","as_u32","as_u32","as_u32","as_u64","as_u64","as_u64","as_usize","as_usize","as_usize","attempted","attempted","attempted","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","cmp","default","default","eq","eq","eq","eq","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_ne_bytes","from_ne_bytes","from_ne_bytes","from_ne_bytes_unchecked","from_ne_bytes_unchecked","from_ne_bytes_unchecked","get","hash","hash","hash","into","into","into","into","into","into","must","must","must","new","new","new","new","new_unchecked","new_unchecked","new_unchecked","one_more","one_more","one_more","partial_cmp","partial_cmp","partial_cmp","to_ne_bytes","to_ne_bytes","to_ne_bytes","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","Config","anchored","borrow","borrow_mut","clone","clone_into","fmt","from","from_input_forward","from_input_reverse","get_anchored","get_look_behind","into","look_behind","new","to_owned","try_from","try_into","type_id","Config","borrow","borrow_mut","case_insensitive","clone","clone_into","crlf","default","dot_matches_new_line","fmt","from","get_case_insensitive","get_crlf","get_dot_matches_new_line","get_ignore_whitespace","get_line_terminator","get_multi_line","get_nest_limit","get_octal","get_swap_greed","get_unicode","get_utf8","ignore_whitespace","into","line_terminator","multi_line","nest_limit","new","octal","parse","parse_many","parse_many_with","parse_with","swap_greed","to_owned","try_from","try_into","type_id","unicode","utf8","AlignAs","DeserializeError","SerializeError","_align","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","bytes","fmt","fmt","fmt","fmt","fmt","from","from","from","into","into","into","to_string","to_string","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"regex_automata"],[247,"regex_automata::MatchErrorKind"],[252,"regex_automata::meta"],[445,"regex_automata::nfa"],[446,"regex_automata::nfa::thompson"],[690,"regex_automata::nfa::thompson::State"],[701,"regex_automata::nfa::thompson::pikevm"],[808,"regex_automata::util"],[821,"regex_automata::util::alphabet"],[902,"regex_automata::util::captures"],[1021,"regex_automata::util::escape"],[1042,"regex_automata::util::interpolate"],[1044,"regex_automata::util::iter"],[1138,"regex_automata::util::lazy"],[1150,"regex_automata::util::look"],[1293,"regex_automata::util::pool"],[1316,"regex_automata::util::prefilter"],[1336,"regex_automata::util::primitives"],[1492,"regex_automata::util::start"],[1511,"regex_automata::util::syntax"],[1551,"regex_automata::util::wire"],[1584,"core::cmp"],[1585,"core::ops::range"],[1586,"core::fmt"],[1587,"core::fmt"],[1588,"core::convert"],[1589,"core::hash"],[1590,"core::convert"],[1591,"core::ops::range"],[1592,"core::result"],[1593,"core::any"],[1594,"regex_syntax::hir"],[1595,"core::borrow"],[1596,"core::error"],[1597,"regex_syntax::error"],[1598,"alloc::sync"],[1599,"alloc::vec"],[1600,"core::iter::traits::collect"],[1601,"core::ops::function"],[1602,"core::fmt"]],"d":["Report all possible matches.","The type of anchored search to perform.","The search, based on heuristics, determined that it would …","A representation of “half” of a match reported by a …","This error occurs if the haystack given to the regex …","The parameters for a regex search including the haystack …","Report only the leftmost matches. When multiple leftmost …","A representation of a match reported by a regex engine.","An error indicating that a search stopped before reporting …","The underlying kind of a MatchError.","The kind of match semantics to use for a regex pattern.","Run an unanchored search. This means a match may occur …","Run an anchored search for a specific pattern. This means …","The identifier of a regex pattern, represented by a …","A set of PatternIDs.","An error that occurs when a PatternID failed to insert …","An iterator over all pattern identifiers in a PatternSet.","The search saw a “quit” byte at which it was …","A representation of a span reported by a regex engine.","An error indicating that a particular type of anchored …","Run an anchored search. This means that a match must begin …","Sets the anchor mode of a search.","","","","","","","","","","","","","","","","","","","","","","","","","Returns the total number of pattern identifiers that may …","Clear this set such that it contains no pattern IDs.","","","","","","","","","","","","","","","","","","","","","","","","","","Returns true when the given offset is contained within …","Return true if and only if the given pattern identifier is …","","","Whether to execute an “earliest” search or not.","Return the end position of this search.","The ending position of the match.","The end offset of the span, exclusive.","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a new “gave up” error. The given offset …","Return the anchored mode for this search configuration.","Return whether this search should execute in “earliest”…","Return the span as a range for this search configuration.","Return the span for this search configuration.","","","","","Return a borrow of the underlying haystack as a slice of …","Create a new “haystack too long” error. The given len …","Insert the given pattern identifier into this set and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns true if and only if this anchor mode corresponds …","Returns true if and only if the given offset in this search…","Return true if and only if this search can never return …","Returns true when this span is empty. That is, when …","Returns true when the span in this match is empty.","Return true if and only if this set has no pattern …","Return true if and only if this set has the maximum number …","Returns an iterator over all pattern identifiers in this …","Returns a reference to the underlying error kind.","Returns the length of this span.","Returns the length of this match.","Returns the total number of pattern identifiers in this …","Provides a regex matcher that composes several other regex …","Create a new half match from a pattern ID and a byte …","Create a new match from a pattern ID and a byte offset …","Create a new search configuration for the given haystack.","Create a new half match from a pattern ID and a byte …","Create a new match from a pattern ID and a span.","Create a new set of pattern identifiers with the given …","Create a new error value with the given kind.","","","Provides non-deterministic finite automata (NFA) and regex …","Returns a new span with offset added to this span’s start…","The position of the match.","","Returns the ID of the pattern that matched.","Returns the ID of the pattern that matched.","Returns the pattern ID associated with this configuration …","Create a new “quit” error. The given byte corresponds …","Like Input::span, but accepts any range instead.","Returns this span as a range.","Returns the match span as a range.","Set the anchor mode of a search.","Set whether the search should execute in “earliest” …","Set the ending offset for the span for this search …","Set the span for this search configuration given any range.","Set the span for this search configuration.","Set the starting offset for the span for this search …","","Set the span for this search.","Returns the span for this match.","Return the start position of this search.","The starting position of the match.","The start offset of the span, inclusive.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Insert the given pattern identifier into this set and …","","","","","","","","","","","","","","","","","","","","","","","","","Create a new “unsupported anchored” error. This occurs …","A collection of modules that provide APIs that are useful …","The “quit” byte that was observed that caused the …","The length of the haystack that exceeded the limit.","The anchored mode given that is unsupported.","The offset at which the quit byte was observed.","The offset at which the search stopped. This corresponds …","An error that occurs when construction of a Regex fails.","A builder for configuring and constructing a Regex.","Represents mutable scratch space used by regex engines …","An iterator over all non-overlapping leftmost matches with …","An object describing the configuration of a Regex.","An iterator over all non-overlapping matches.","A regex matcher that works by composing several other …","Yields all substrings delimited by a regular expression …","Yields at most N spans delimited by a regular expression …","Toggles whether automatic prefilter support is enabled.","Toggle whether a bounded backtracking regex engine should …","","","","","","","","","","","","","","","","","","","Builds a Regex from a single pattern string.","Builds a Regex directly from an Hir expression.","Builds a Regex from many pattern strings.","Builds a Regex directly from many Hir expressions.","Return a builder for configuring the construction of a …","Whether to attempt to shrink the size of the alphabet for …","Executes a leftmost forward search and writes the spans of …","Returns an iterator over all non-overlapping Captures …","Returns the total number of capturing groups.","","","","","","","","","","","Return a default configuration for a Regex.","Configure the behavior of a Regex.","","","Creates a new cache for use with lower level search APIs …","Creates a new object for recording capture group offsets. …","","Toggle whether a fully compiled DFA should be available …","Sets the size limit, in bytes, for heap memory used for a …","Sets a limit on the total number of NFA states, beyond …","Executes a leftmost search and returns the first match …","Returns an iterator over all non-overlapping leftmost …","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns whether automatic prefilters are enabled, as set by","Returns whether the bounded backtracking regex engine may …","Returns whether byte classes are enabled, as set by …","Returns the configuration object used to build this Regex.","Returns whether the DFA regex engine may be used, as set by","Returns DFA size limit, as set by Config::dfa_size_limit.","Returns DFA size limit in terms of the number of states in …","Returns whether the hybrid NFA/DFA regex engine may be …","Returns hybrid NFA/DFA cache capacity, as set by …","Returns the line terminator for this configuration, as set …","Returns the match kind on this configuration, as set by …","Returns NFA size limit, as set by Config::nfa_size_limit.","Returns whether the one-pass DFA regex engine may be used, …","Returns one-pass DFA size limit, as set by …","Returns a manually set prefilter, if one was set by …","Returns whether empty matches must fall on valid UTF-8 …","Returns the capture configuration, as set by …","Return information about the capture groups in this Regex.","Toggle whether the hybrid NFA/DFA (also known as the “…","Set the cache capacity, in bytes, for the lazy DFA.","Returns the current Input associated with this iterator.","Returns the current Input associated with this iterator.","Returns the current Input associated with this iterator.","Returns the current Input associated with this iterator.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","Returns true if this regex has a high chance of being “…","Returns true if and only if this regex matches the given …","Set the line terminator to be used by the ^ and $ anchors …","Set the match semantics for a Regex.","Return the total approximate heap memory, in bytes, used …","Returns the heap memory usage, in bytes, of this cache.","Builds a Regex from a single pattern string using the …","Creates a new Cache for use with this regex.","Create a new configuration object for a Regex.","Creates a new builder for configuring and constructing a …","Builds a Regex from many pattern strings using the default …","","","","","Sets the size limit, in bytes, to enforce on the …","Toggle whether a one-pass DFA should be available for use …","Sets the size limit, in bytes, for the one-pass DFA.","If it is known which pattern ID caused this build error to …","Returns the total number of patterns in this regex.","Overrides and sets the prefilter to use inside a Regex.","Returns the Regex value that created this iterator.","Returns the Regex value that created this iterator.","Reset this cache such that it can be used for searching …","Returns the start and end offset of the leftmost match. If …","Executes a leftmost forward search and writes the spans of …","This is like Regex::search_captures, but requires the …","Returns the end offset of the leftmost match. If no match …","This is like Regex::search_half, but requires the caller to","Executes a leftmost forward search and writes the spans of …","This is like Regex::search_slots, but requires the caller …","This is like Regex::search, but requires the caller to …","","If this error occurred because the regex exceeded the …","","Returns an iterator of spans of the haystack given, …","Returns an iterator of at most limit spans of the haystack …","Returns the total number of capturing groups that appear …","Configure the syntax options when parsing a pattern string …","If this error corresponds to a syntax error, then a …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Toggles whether empty matches are permitted to occur …","Configures what kinds of groups are compiled as “…","Writes the set of patterns that match anywhere in the …","This is like Regex::which_overlapping_matches, but …","Defines a Thompson NFA and provides the PikeVM and …","All capture states, including those corresponding to both …","An alternation such that there exists precisely two …","An error that can occurred during the construction of a …","An abstraction for building Thompson NFAs by hand.","A state with a single transition that can only be taken if …","An empty state that records a capture location.","A builder for compiling an NFA from a regex’s high-level …","The configuration used for a Thompson NFA compiler.","A dense representation of a state with multiple …","A sequence of transitions used to represent a dense state.","A state that cannot be transitioned out of. This is useful …","Only capture states corresponding to implicit capture …","A conditional epsilon transition satisfied via some sort of","A match state. There is at least one such occurrence of …","A byte oriented Thompson non-deterministic finite …","No capture states are compiled into the Thompson NFA.","An iterator over all pattern IDs in an NFA.","A state with possibly many transitions represented in a …","A sequence of transitions used to represent a sparse state.","A state in an NFA.","A single transition to another state.","An alternation such that there exists an epsilon …","A configuration indicating which kinds of State::Capture …","Add a “end capture” NFA state.","Add a “start capture” NFA state.","Add an “empty” NFA state.","Adds a “fail” NFA state.","Add a “look” NFA state.","Adds a “match” NFA state.","Add a “range” NFA state.","Add a “sparse” NFA state.","Add a “union” NFA state.","Add a “reverse union” NFA state.","Returns an NFA with a single regex pattern that always …","","","","","","","","","","","","","","","","","","","","","","","Assemble a NFA from the states added so far.","Compile the given regular expression pattern into an NFA.","Compile the given high level intermediate representation …","Compile the given regular expression patterns into a …","Compile the given high level intermediate representations …","Get the byte classes for this NFA.","Whether to include ‘Capture’ states in the NFA.","Clear this builder.","","","","","","","","","","","","","","","","","","","","","Return a compiler for configuring the construction of an …","Return a default configuration for an NFA.","Apply the given NFA configuration options to this builder.","Returns the pattern identifier of the current pattern.","","","","The inclusive end of the byte range.","","","","","Finish the assembly of a pattern in this NFA.","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return whether NFA compilation is configured to produce …","Returns the look-around matcher used for this builder.","Return the look-around matcher for this NFA.","Return the configured NFA size limit, if it exists, in the …","Returns whether reverse mode is enabled for this builder.","Returns whether this configuration has enabled reverse NFA …","Return whether NFA shrinking is enabled.","Return the currently configured size limit.","Returns whether UTF-8 mode is enabled for this builder.","Returns whether this configuration has enabled UTF-8 mode.","Return what kinds of capture states will be compiled into …","Returns the capturing group info for this NFA.","Returns true if and only if this NFA has at least one …","Returns true if and only if this NFA can match the empty …","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns true if and only if all starting states for this …","Returns true if this configuration indicates that some …","Returns true if and only if this state contains one or …","Returns true if this configuration indicates that no …","Returns true when this NFA is meant to be matched in …","Whether UTF-8 mode is enabled for this NFA or not.","Sets the look-around matcher that should be used with this …","Returns the look-around matcher associated with this NFA.","Returns the union of all look-around assertions used …","Returns the union of all prefix look-around assertions for …","This follows the matching transition for a particular byte.","This follows the matching transition for a particular byte.","Returns true if the position at in haystack falls in this …","This follows the matching transition for a particular byte.","This follows the matching transition for a particular byte.","Returns true if the given byte falls in this transition’…","Returns true if the given alphabet unit falls in this …","Returns the heap memory usage, in bytes, used by the NFA …","Returns the memory usage, in bytes, of this NFA.","Returns an NFA that never matches at any position.","Create a new builder for hand-assembling NFAs.","Return a new default Thompson NFA compiler configuration.","Create a new NFA builder with its default configuration.","Parse the given regular expression using a default …","Parse the given regular expressions using a default …","","The identifier of the state to transition to.","Sets an approximate size limit on the total heap used by …","Add a transition from one state to another.","Returns the number of patterns added to this builder so …","Returns the total number of regex patterns in this NFA.","Returns an iterator over all pattern identifiers in this …","An NFA backed Pike VM for executing regex searches with …","Reverse the NFA.","Sets the look-around matcher that should be used for the …","Sets whether the NFA produced by this builder should be …","Set the size limit on this builder.","Set whether the NFA produced by this builder should only …","Apply best effort heuristics to shrink the NFA at the …","If this error occurred because the NFA exceeded the …","","The inclusive start of the byte range.","Return the state identifier of the initial anchored state …","Start the assembly of a pattern in this NFA.","Return the state identifier of the initial anchored state …","Return the state identifier of the initial unanchored …","Return a reference to the NFA state corresponding to the …","Returns a slice of all states in this NFA.","Set the syntax configuration for this builder using …","","","","","","","","","","","","The sorted sequence of non-overlapping transitions.","A dense representation of this state’s transitions on …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Whether to enable UTF-8 mode during search or not.","Configures what kinds of capture groups are compiled into …","An unconditional epsilon transition to another NFA state. …","An unconditional epsilon transition to another NFA state. …","An ordered sequence of unconditional epsilon transitions …","The capture group index that this capture belongs to. …","The look-around assertion that must be satisfied before …","The state to transition to if the look-around assertion is …","The state to transition to, unconditionally.","The pattern ID that this capture belongs to.","The matching pattern ID.","The slot index for this capture. Every capturing group has …","The transition from this state to the next.","A builder for a PikeVM.","A cache represents mutable state that a PikeVM requires …","An iterator over all non-overlapping leftmost matches, …","The configuration used for building a PikeVM.","An iterator over all non-overlapping matches for a …","A virtual machine for executing regex searches with …","Create a new PikeVM that matches every input.","","","","","","","","","","","","","Build a PikeVM from the given pattern.","Build a PikeVM directly from its NFA.","Build a PikeVM from the given patterns.","Return a builder for configuring the construction of a …","Executes a leftmost forward search and writes the spans of …","Returns an iterator over all non-overlapping Captures …","","","","","","","","","Return a default configuration for a PikeVM.","Apply the given PikeVM configuration options to this …","Create a new cache for this PikeVM.","Create a new empty set of capturing groups that is …","","Executes a leftmost forward search and returns a Match if …","Returns an iterator over all non-overlapping leftmost …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the config for this PikeVM.","Returns the match semantics set in this configuration.","Returns a reference to the underlying NFA.","Returns the prefilter set in this configuration, if one at …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns true if and only if this PikeVM matches the given …","Set the desired match semantics.","Returns the heap memory usage, in bytes, of this cache.","Create a new PikeVM that never matches any input.","Return a new default PikeVM configuration.","Create a new PikeVM builder with its default configuration.","Parse the given regular expression using the default …","Create a new PikeVM cache.","Like new, but builds a PikeVM directly from an NFA. This …","Like new, but parses multiple patterns into a single “…","","","Returns the total number of patterns compiled into this …","Set a prefilter to be used whenever a start state is …","Reset this cache such that it can be used for searching …","Reset the given cache such that it can be used for …","Executes a leftmost forward search and writes the spans of …","Executes a leftmost forward search and writes the spans of …","Set the syntax configuration for this builder using …","Set the Thompson NFA configuration for this builder using …","","","","","","","","","","","","","","","","","","","","","","","Writes the set of patterns that match anywhere in the …","This module provides APIs for dealing with the alphabets …","Provides types for dealing with capturing groups.","Provides convenience routines for escaping raw bytes.","Provides routines for interpolating capture group …","Generic helpers for iteration of matches from a regex …","A lazily initialized value for safe sharing between …","Types and routines for working with look-around assertions.","A thread safe memory pool.","Defines a prefilter for accelerating regex searches.","Lower level primitive types that are useful in a variety …","Provides helpers for dealing with start state …","Utilities for dealing with the syntax of a regular …","Types and routines that support the wire format of finite …","An iterator over all elements in an equivalence class.","An iterator over each equivalence class.","An iterator over representative bytes from each …","A representation of byte oriented equivalence classes.","Unit represents a single unit of haystack for DFA based …","Return the total number of elements in the alphabet …","If this unit is an “end of input” sentinel, then …","If this unit is not an “end of input” sentinel, then …","Return this unit as a usize, regardless of whether it is a …","","","","","","","","","","","","","","","","","Returns an iterator of the bytes in the given equivalence …","Creates a new set of equivalence classes where all bytes …","Create a new “end of input” haystack unit.","Create a unit that represents the “end of input” …","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get the equivalence class for the given byte.","Get the equivalence class for the given haystack unit and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Returns true if and only of this unit is a byte value …","Returns true when this unit represents an “end of input…","Returns true if and only if every byte in this class maps …","Returns true when this unit corresponds to an ASCII word …","Returns an iterator over all equivalence classes in this …","","","","","Returns an iterator over a sequence of representative …","Set the equivalence class for the given byte.","Creates a new set of equivalence classes where each byte …","Returns the stride, as a base-2 exponent, required for …","","","","","","","","","","","","","","","","","","Create a new haystack unit from a byte value.","The span offsets of capturing groups after a match has …","An iterator over all capturing groups in a Captures value.","Represents information about capturing groups in a …","An iterator over capturing groups and their names for a …","An error that may occur when building a GroupInfo.","An iterator over capturing groups and their names for a …","Create new storage for the offsets of all matching …","Return the total number of capture groups across all …","Return an iterator of all capture groups for all patterns …","","","","","","","","","","","","","Clear this Captures value.","","","","","","","","","","","","","","Create new storage for only tracking which pattern …","This creates an empty GroupInfo.","Returns the total number of slots for explicit capturing …","This is a convenience routine for extracting the substrings","This is a convenience routine for extracting the substrings","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the span of a capturing group match corresponding …","Returns the span of a capturing group match corresponding …","Returns the pattern ID and the span of the match, if one …","Returns a reference to the underlying group info on which …","Return the total number of capturing groups for the …","Return the number of capture groups in a pattern.","Returns the total number of slots for implicit capturing …","Interpolates the capture references in replacement with the","Interpolates the capture references in replacement with the","Interpolates the capture references in replacement with the","Interpolates the capture references in replacement with the","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Returns true if and only if this capturing group …","Returns an iterator of possible spans for every capturing …","Create new storage for only the full match spans of a …","Returns the memory usage, in bytes, of this GroupInfo.","Creates a new group info from a sequence of patterns, …","","","","Returns the identifier of the pattern that matched when …","Returns the total number of patterns in this GroupInfo.","Return an iterator of all capture groups and their names …","Set the pattern on this Captures value.","","","Returns the starting slot corresponding to the given …","Returns the total number of slots in this GroupInfo across …","Returns the underlying slots, where each slot stores a …","Returns the starting and ending slot corresponding to the …","Returns the underlying slots as a mutable slice, where …","","Return the capture group index corresponding to the given …","Return the capture name for the given index and given …","","","","","","","","","","","","","","","","","","","","","","","","","Provides a convenient Debug implementation for a u8.","Provides a convenient Debug implementation for &[u8].","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","","","","","","","","Accepts a replacement byte string and interpolates capture …","Accepts a replacement string and interpolates capture …","An iterator over all non-overlapping captures for an …","An iterator over all non-overlapping half matches for an …","An iterator over all non-overlapping matches for an …","A searcher for creating iterators and performing lower …","An iterator over all non-overlapping captures for a …","An iterator over all non-overlapping half matches for a …","An iterator over all non-overlapping matches for a …","Return the next match for an infallible search if one …","Return the next half match for an infallible search if one …","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return an infallible version of this iterator.","Return an infallible version of this iterator.","Return an infallible version of this iterator.","Returns the current Input used by this iterator.","Returns the current Input used by this iterator.","Returns the current Input used by this searcher.","Returns the current Input used by this iterator.","Returns the current Input used by this iterator.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Given a closure that executes a single search, return an …","Given a closure that executes a single search, return an …","","","","","","","Given a closure that executes a single search, return an …","Create a new fallible non-overlapping matches iterator.","","","","","","","","Return the next match for a fallible search if one exists, …","Return the next half match for a fallible search if one …","","","","","","","","","","","","","","","","","","","","","","A lazily initialized value that implements Deref for T.","","","","","Returns the argument unchanged.","Return a reference to the lazily initialized value.","Calls U::from(self).","Create a new Lazy value that is initialized via the given …","","","","Match the end of text. Specifically, this matches at the …","Match the end of a line or the end of text. Specifically, …","Match the end of a line or the end of text. Specifically, …","A look-around assertion.","A matcher for look-around assertions.","LookSet is a memory-efficient set of look-around …","An iterator over all look-around assertions in a LookSet.","Match the beginning of text. Specifically, this matches at …","Match the beginning of a line or the beginning of text. …","Match the beginning of a line or the beginning of text. …","An error that occurs when the Unicode-aware \\\\w class is …","Match an ASCII-only word boundary. That is, this matches a …","Match an ASCII-only negation of a word boundary.","Match the end of an ASCII-only word boundary. That is, …","Match the end half of an ASCII-only word boundary. That …","Match the end half of a Unicode word boundary. That is, …","Match the end of a Unicode word boundary. That is, this …","Match the start of an ASCII-only word boundary. That is, …","Match the start half of an ASCII-only word boundary. That …","Match the start half of a Unicode word boundary. That is, …","Match the start of a Unicode word boundary. That is, this …","Match a Unicode-aware word boundary. That is, this matches …","Match a Unicode-aware negation of a word boundary.","Returns a convenient single codepoint representation of …","Return the underlying representation of this look-around …","Checks that all assertions in this set can be matched.","The underlying representation this set is exposed to make …","","","","","","","","","","","Returns an error if and only if Unicode word boundary data …","","","","","","","","","","","Returns true if and only if the given look-around …","Returns true if and only if this set contains any anchor …","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any word …","Returns true if and only if this set contains any ASCII …","Returns true if and only if this set contains any Unicode …","","","Create an empty set of look-around assertions.","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Given the underlying representation of a Look value, …","Create a full set of look-around assertions.","Returns the line terminator that was configured for this …","Return a new set that is equivalent to the original, but …","Returns a new set that is the intersection of this and the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns true if and only if this set is empty.","Returns true when Look::End is satisfied at the given …","Returns true when Look::EndCRLF is satisfied at the given …","Returns true when Look::EndLF is satisfied at the given …","Returns true when Look::Start is satisfied at the given …","Returns true when Look::StartCRLF is satisfied at the given","Returns true when Look::StartLF is satisfied at the given …","Returns true when Look::WordAscii is satisfied at the given","Returns true when Look::WordAsciiNegate is satisfied at …","Returns true when Look::WordEndAscii is satisfied at the …","Returns true when Look::WordEndHalfAscii is satisfied at …","Returns true when Look::WordEndHalfUnicode is satisfied at …","Returns true when Look::WordEndUnicode is satisfied at the …","Returns true when Look::WordStartAscii is satisfied at the …","Returns true when Look::WordStartHalfAscii is satisfied at …","Returns true when Look::WordStartHalfUnicode is satisfied …","Returns true when Look::WordStartUnicode is satisfied at …","Returns true when Look::WordUnicode is satisfied at the …","Returns true when Look::WordUnicodeNegate is satisfied at …","Returns an iterator over all of the look-around assertions …","Returns the total number of look-around assertions in this …","Returns true when the position at in haystack satisfies …","Returns true when all of the assertions in the given set …","Creates a new default matcher for look-around assertions.","","Return a LookSet from the slice given as a native endian …","Return a new set that is equivalent to the original, but …","Flip the look-around assertion to its equivalent for …","Updates this set in place with the result of inserting the …","Updates this set in place with the result of intersecting …","Sets the line terminator for use with (?m:^) and (?m:$).","Updates this set in place with the result of removing the …","Updates this set in place with the result of subtracting …","Updates this set in place with the result of unioning it …","Create a look-around set containing the look-around …","Returns a new set that is the result of subtracting the …","","","","","","","","","","","","","","","","","","","","","","Returns a new set that is the union of this and the one …","Write a LookSet as a native endian 32-bit integer to the …","A thread safe pool that works in an alloc-only context.","A guard that is returned when a caller requests a value …","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Get a value from the pool. The caller is guaranteed to have","Calls U::from(self).","Calls U::from(self).","Create a new pool. The given closure is used to create …","Consumes this guard and puts it back into the pool.","","","","","","","A prefilter for accelerating regex searches.","","","","","Run this prefilter on haystack[span.start..end] and return …","","Returns the argument unchanged.","This attempts to extract prefixes from the given Hir …","This attempts to extract prefixes from the given Hir …","Calls U::from(self).","Implementations might return true here if they believe …","Return the length of the longest needle in this Prefilter","Returns the heap memory, in bytes, used by the underlying …","Create a new prefilter from a sequence of needles and a …","Returns the span of a prefix of …","","","","","The total number of values that can be represented as a …","The total number of values that can be represented.","The total number of values that can be represented.","The maximum index value.","The maximum value.","The maximum value.","A usize that can never be usize::MAX.","The identifier of a regex pattern, represented by a …","This error occurs when a value could not be constructed.","The number of bytes that a single small index uses in …","The number of bytes that a single value uses in memory.","The number of bytes that a single value uses in memory.","A type that represents a “small” index.","This error occurs when a small index could not be …","The identifier of a finite automaton state, represented by …","This error occurs when a value could not be constructed.","The zero index value.","The zero value.","The zero value.","Return the internal u32 of this small index represented as …","Return the internal value as a i32…","Return the internal value as a i32…","Return the internal u32 of this small index. This is …","Return the internal value as a u32. This is guaranteed to …","Return the internal value as a u32. This is guaranteed to …","Return this small index as a u64. This is guaranteed to …","Return the internal value as a u64. This is guaranteed to …","Return the internal value as a u64. This is guaranteed to …","Return this small index as a usize. This is guaranteed to …","Return the internal value as a usize. This is guaranteed to","Return the internal value as a usize. This is guaranteed to","Returns the value that could not be converted to a small …","Returns the value that could not be converted to an ID.","Returns the value that could not be converted to an ID.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Decode this small index from the bytes given using the …","Decode this value from the bytes given using the native …","Decode this value from the bytes given using the native …","Decode this small index from the bytes given using the …","Decode this value from the bytes given using the native …","Decode this value from the bytes given using the native …","Return the underlying usize value. The returned value is …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Like SmallIndex::new, but panics if the given index is not …","Like new, but panics if the given value is not valid.","Like new, but panics if the given value is not valid.","Create a new NonMaxUsize from the given value.","Create a new small index.","Create a new value that is represented by a “small index.…","Create a new value that is represented by a “small index.…","Create a new small index without checking whether the …","Create a new value without checking whether the given …","Create a new value without checking whether the given …","Returns one more than this small index as a usize.","Returns one more than this value as a usize.","Returns one more than this value as a usize.","","","","Return the underlying small index integer as raw bytes in …","Return the underlying integer as raw bytes in native endian","Return the underlying integer as raw bytes in native endian","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The configuration used to determine a DFA’s start state …","Set the anchored mode of a search.","","","","","","Returns the argument unchanged.","A convenience routine for building a start configuration …","A convenience routine for building a start configuration …","Return the anchored mode in this configuration.","Return the look-behind byte in this configuration, if one …","Calls U::from(self).","Set the look-behind byte at the start of a search.","Create a new default start configuration.","","","","","A common set of configuration options that apply to the …","","","Enable or disable the case insensitive flag by default.","","","Enable or disable the “CRLF mode” flag by default.","","Enable or disable the “dot matches any character” flag …","","Returns the argument unchanged.","Returns whether “case insensitive” mode is enabled.","Returns whether “CRLF” mode is enabled.","Returns whether “dot matches new line” mode is enabled.","Returns whether “ignore whitespace” mode is enabled.","Returns the line terminator in this syntax configuration.","Returns whether “multi line” mode is enabled.","Returns the “nest limit” setting.","Returns whether “octal” mode is enabled.","Returns whether “swap greed” mode is enabled.","Returns whether “unicode” mode is enabled.","Returns whether UTF-8 mode is enabled.","Enable verbose mode in the regular expression.","Calls U::from(self).","Sets the line terminator for use with (?u-s:.) and (?-us:.)…","Enable or disable the multi-line matching flag by default.","Set the nesting limit used for the regular expression …","Return a new default syntax configuration.","Whether to support octal syntax or not.","A convenience routine for parsing a pattern into an HIR …","A convenience routine for parsing many patterns into HIR …","A convenience routine for parsing many patterns into HIR …","A convenience routine for parsing a pattern into an HIR …","Enable or disable the “swap greed” flag by default.","","","","","Enable or disable the Unicode flag (u) by default.","When disabled, the builder will permit the construction of …","A hack to align a smaller type B with a bigger type T.","An error that occurs when deserializing an object defined …","An error that occurs when serializing an object from this …","A zero-sized field indicating the alignment we want.","","","","","","","A possibly non-sized field containing a sequence of bytes.","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","",""],"i":[12,0,14,0,14,0,12,0,0,0,0,2,2,0,0,0,0,14,0,14,2,1,6,1,7,8,9,3,10,11,2,12,13,14,6,1,7,8,9,3,10,11,2,12,13,14,3,3,6,1,7,8,9,3,10,11,2,12,13,14,6,1,7,8,9,3,10,11,2,12,13,14,6,7,3,6,12,1,1,9,7,6,7,7,8,9,3,2,12,13,14,6,1,7,8,9,3,10,10,11,2,12,13,13,14,6,6,1,1,7,7,8,9,3,10,11,2,12,13,14,13,1,1,1,1,6,7,8,9,1,13,3,6,1,7,8,9,3,10,11,2,12,13,14,11,2,1,1,7,9,3,3,3,13,7,9,3,0,8,9,1,8,9,3,13,11,11,0,7,8,6,8,9,2,13,1,7,9,1,1,1,1,1,1,11,1,9,1,9,7,6,1,7,8,9,3,10,11,2,12,13,14,10,13,6,6,6,6,6,1,7,8,9,3,10,11,2,12,13,14,3,6,1,7,8,9,3,10,11,2,12,13,14,6,1,7,8,9,3,10,11,2,12,13,14,13,0,117,118,119,117,120,0,0,0,0,0,0,0,0,0,35,35,39,38,45,43,46,47,44,35,36,39,38,45,43,46,47,44,35,36,36,36,36,36,38,35,38,38,38,39,38,44,35,36,39,38,44,35,36,38,36,45,43,38,38,35,35,35,35,38,38,39,39,38,45,43,46,47,44,35,36,39,38,45,43,46,47,44,35,36,35,35,35,38,35,35,35,35,35,35,35,35,35,35,35,35,35,38,35,35,45,43,46,47,39,38,45,43,46,47,44,35,36,45,43,46,47,38,38,35,35,38,44,38,44,35,36,38,45,43,46,47,35,35,35,39,38,35,45,43,44,38,38,38,38,38,38,38,38,47,39,39,38,38,38,36,39,39,38,44,35,36,39,39,38,45,43,46,47,44,35,36,39,38,45,43,46,47,44,35,36,39,38,45,43,46,47,44,35,36,35,35,38,38,0,49,66,0,0,66,66,0,0,66,0,66,49,66,66,0,49,0,66,0,0,0,66,0,55,55,55,55,55,55,55,55,55,55,62,55,65,49,63,57,62,66,67,68,60,69,55,65,49,63,57,62,66,67,68,60,69,55,63,63,63,63,62,65,55,55,65,49,63,57,62,66,67,68,60,55,65,49,63,57,62,66,67,68,60,62,62,63,55,55,65,49,60,66,67,68,60,55,55,65,49,63,57,57,62,66,67,68,60,69,55,65,49,63,57,62,66,67,68,60,69,65,55,65,65,55,65,65,55,55,65,65,62,62,62,60,55,65,49,63,57,62,66,67,68,60,69,69,62,49,66,49,62,62,65,62,62,62,67,68,60,67,68,60,60,55,62,62,55,65,63,62,62,69,60,65,55,55,62,62,0,65,55,55,55,55,65,57,57,60,62,55,62,62,62,62,63,55,65,49,63,57,62,66,67,68,60,57,67,68,55,65,49,63,57,62,66,67,68,60,69,55,65,49,63,57,62,66,67,68,60,69,55,65,49,63,57,62,66,67,68,60,69,65,65,121,121,122,123,124,124,123,123,125,123,126,0,0,0,0,0,0,73,77,74,73,78,76,75,77,74,73,78,76,75,74,74,74,73,73,73,77,74,73,75,77,74,73,75,73,74,73,73,77,73,73,77,74,73,78,76,75,77,74,73,78,76,75,73,77,73,77,77,74,73,78,76,75,78,76,73,77,75,73,77,74,73,75,73,73,78,76,73,77,75,73,73,73,74,74,77,74,73,75,77,74,73,78,76,75,77,74,73,78,76,75,77,74,73,78,76,75,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,72,72,72,72,64,80,81,79,72,64,80,81,79,72,64,72,64,72,64,64,64,72,64,72,72,64,80,81,79,72,64,80,81,79,64,64,72,64,80,81,79,80,81,79,72,72,64,72,64,80,81,79,72,64,64,64,64,72,64,72,64,80,81,79,72,64,80,81,79,72,64,80,81,79,72,0,0,0,0,0,0,42,50,50,42,83,50,84,85,82,42,83,50,84,85,82,42,42,83,50,84,85,42,83,50,84,85,83,85,50,42,50,50,42,42,42,83,50,84,84,85,82,42,83,50,84,85,82,42,42,42,42,42,50,50,42,42,42,42,42,83,50,84,85,82,83,85,82,42,42,42,50,50,83,85,82,42,50,50,42,83,85,50,50,42,50,42,84,50,50,42,83,50,84,85,84,42,83,50,84,85,82,42,83,50,84,85,82,42,83,50,84,85,82,0,0,90,89,90,89,89,89,90,89,90,89,90,89,89,90,89,90,89,90,89,0,0,0,0,0,0,0,0,0,93,93,94,95,96,93,97,99,100,94,95,96,93,97,99,100,93,93,94,95,96,93,97,99,100,94,95,96,93,97,99,100,94,95,96,94,95,93,97,99,94,95,96,93,97,99,100,93,93,94,95,96,97,99,100,93,93,94,95,96,97,99,100,93,93,93,94,95,96,93,97,99,100,94,95,96,93,97,99,100,94,95,96,93,97,99,100,0,101,101,101,101,101,101,101,101,101,101,101,59,59,59,0,0,0,0,59,59,59,0,59,59,59,59,59,59,59,59,59,59,59,59,59,59,71,71,59,71,105,70,104,59,71,105,70,104,104,59,71,105,70,104,59,71,105,70,104,71,71,71,71,71,71,71,71,71,71,70,71,59,71,59,71,105,70,104,104,59,71,105,70,104,59,71,70,71,71,59,71,105,70,104,105,71,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,70,71,71,70,70,70,105,71,71,59,71,71,70,71,71,71,71,71,59,71,105,70,104,104,59,71,105,70,104,59,71,105,70,104,59,71,105,70,104,71,71,0,0,108,106,108,106,106,106,108,106,108,106,108,108,106,108,106,108,106,108,106,108,106,0,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48,109,6,56,109,6,56,0,0,0,109,6,56,0,0,0,0,109,6,56,109,6,56,109,6,56,109,6,56,109,6,56,111,31,112,51,109,111,56,31,112,51,109,111,56,31,112,51,109,111,56,31,112,51,109,111,56,31,112,51,109,56,109,56,51,109,111,56,31,112,51,109,111,111,56,31,31,112,112,51,109,109,111,56,56,31,112,109,6,56,109,6,56,51,51,109,56,51,109,111,56,31,112,109,6,56,51,109,6,56,109,6,56,109,6,56,51,109,56,109,6,56,51,109,111,56,31,112,111,31,112,51,109,109,109,109,109,111,56,56,56,56,56,31,112,51,109,111,56,31,112,51,109,111,56,31,112,0,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,113,0,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,53,0,0,0,0,53,53,53,53,53,53,53,0,0,0,114,114,115,116,114,115,116,114,114,115,115,116,116,114,115,116,114,115,116,115,116,114,115,116,114,115,116,114,115,116],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[1,2],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,4],[3,5],[6,6],[1,1],[7,7],[8,8],[9,9],[3,3],[10,10],[11,11],[2,2],[12,12],[13,13],[14,14],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[6,6],15],[[7,4],16],[[3,6],16],[[],6],[[],12],[[1,16],1],[1,4],[9,4],0,[[6,6],16],[[7,[17,[4]]],16],[[7,7],16],[[8,8],16],[[9,9],16],[[3,3],16],[[2,2],16],[[12,12],16],[[13,13],16],[[14,14],16],[[6,18],19],[[1,18],19],[[7,18],19],[[8,18],19],[[9,18],19],[[3,18],19],[[10,18],19],[[10,18],19],[[11,18],19],[[2,18],19],[[12,18],19],[[13,18],19],[[13,18],19],[[14,18],19],[20,6],[-1,-1,[]],[-1,1,[21,[23,[[22,[20]]]]]],[-1,-1,[]],[[[17,[4]]],7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[4,13],[1,2],[1,16],[1,[[17,[4]]]],[1,7],[[6,-1],5,24],[[7,-1],5,24],[[8,-1],5,24],[[9,-1],5,24],[1,[[22,[20]]]],[4,13],[[3,6],16],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[2,16],[[1,4],16],[1,16],[7,16],[9,16],[3,16],[3,16],[3,11],[13,14],[7,4],[9,4],[3,4],0,[[4,4],8],[[4,-1],9,[[25,[7]]]],[-1,1,[21,[23,[[22,[20]]]]]],[[6,4],8],[[6,-1],9,[[25,[7]]]],[4,3],[14,13],[11,[[26,[6]]]],[11,[[26,[6]]]],0,[[7,4],7],[8,4],[[6,6],[[26,[15]]]],[8,6],[9,6],[2,[[26,[6]]]],[[20,4],13],[[1,-1],1,[[27,[4]]]],[7,[[17,[4]]]],[9,[[17,[4]]]],[[1,2],5],[[1,16],5],[[1,4],5],[[1,-1],5,[[27,[4]]]],[[1,-1],5,[[25,[7]]]],[[1,4],5],[11,[[5,[4,[26,[4]]]]]],[[1,-1],1,[[25,[7]]]],[9,7],[1,4],[9,4],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],[-1,28,[]],[-1,[[29,[-2]]],[],[]],[30,[[29,[6,31]]]],[4,[[29,[6,31]]]],[32,[[29,[6,31]]]],[33,[[29,[6,31]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[[3,6],[[29,[16,10]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[2,13],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[35,16],35],[[35,16],35],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[36,37],[[29,[38,39]]]],[[36,40],[[29,[38,39]]]],[[36,[22,[-1]]],[[29,[38,39]]],[[23,[37]]]],[[36,[22,[-1]]],[[29,[38,39]]],[[41,[40]]]],[[],36],[[35,16],35],[[38,-1,42],5,[[25,[1]]]],[[38,-1],43,[[25,[1]]]],[38,4],[39,39],[38,38],[44,44],[35,35],[36,36],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],35],[[36,35],36],[45,4],[43,4],[38,44],[38,42],[[],35],[[35,16],35],[[35,[26,[4]]],35],[[35,[26,[4]]],35],[[38,-1],[[26,[9]]],[[25,[1]]]],[[38,-1],45,[[25,[1]]]],[[39,18],19],[[39,18],19],[[38,18],19],[[45,18],19],[[43,18],19],[[46,18],19],[[47,18],19],[[44,18],19],[[35,18],19],[[36,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[35,16],[35,16],[35,16],[38,35],[35,16],[35,[[26,[4]]]],[35,[[26,[4]]]],[35,16],[35,4],[35,20],[35,12],[35,[[26,[4]]]],[35,16],[35,[[26,[4]]]],[35,[[26,[48]]]],[35,16],[35,49],[38,50],[[35,16],35],[[35,4],35],[45,1],[43,1],[46,1],[47,1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[38,16],[[38,-1],16,[[25,[1]]]],[[35,20],35],[[35,12],35],[38,4],[44,4],[37,[[29,[38,39]]]],[38,44],[[],35],[[],36],[[[22,[-1]]],[[29,[38,39]]],[[23,[37]]]],[45,[[26,[9]]]],[43,[[26,[42]]]],[46,[[26,[7]]]],[47,[[26,[7]]]],[[35,[26,[4]]],35],[[35,16],35],[[35,[26,[4]]],35],[39,[[26,[6]]]],[38,4],[[35,[26,[48]]],35],[45,38],[43,38],[[44,38],5],[[38,1],[[26,[9]]]],[[38,1,42],5],[[38,44,1,42],5],[[38,1],[[26,[8]]]],[[38,44,1],[[26,[8]]]],[[38,1,[22,[[26,[51]]]]],[[26,[6]]]],[[38,44,1,[22,[[26,[51]]]]],[[26,[6]]]],[[38,44,1],[[26,[9]]]],[47,[[5,[4,[26,[4]]]]]],[39,[[26,[4]]]],[39,[[26,[52]]]],[[38,-1],46,[[25,[1]]]],[[38,-1,4],47,[[25,[1]]]],[38,[[26,[4]]]],[[36,53],36],[39,[[26,[54]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[35,16],35],[[35,49],35],[[38,1,3],5],[[38,44,1,3],5],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[55,56,32],[[29,[56,57]]]],[[55,56,32,[26,[[58,[37]]]]],[[29,[56,57]]]],[55,[[29,[56,57]]]],[55,[[29,[56,57]]]],[[55,56,59],[[29,[56,57]]]],[55,[[29,[56,57]]]],[[55,60],[[29,[56,57]]]],[[55,[61,[60]]],[[29,[56,57]]]],[[55,[61,[56]]],[[29,[56,57]]]],[[55,[61,[56]]],[[29,[56,57]]]],[[],62],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[55,56,56],[[29,[62,57]]]],[[63,37],[[29,[62,57]]]],[[63,40],[[29,[62,57]]]],[[63,[22,[-1]]],[[29,[62,57]]],[[23,[37]]]],[[63,[22,[-1]]],[[29,[62,57]]],[[41,[40]]]],[62,64],[[65,16],65],[55,5],[55,55],[65,65],[49,49],[63,63],[57,57],[62,62],[66,66],[67,67],[68,68],[60,60],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],63],[[],65],[[63,65],63],[55,6],[[],55],[[],65],[[],49],0,[[66,66],16],[[67,67],16],[[68,68],16],[[60,60],16],[[55,56],[[29,[6,57]]]],[[55,18],19],[[65,18],19],[[49,18],19],[[63,18],19],[[57,18],19],[[57,18],19],[[62,18],19],[[66,18],19],[[67,18],19],[[68,18],19],[[60,18],19],[[69,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[65,16],[55,70],[65,70],[65,[[26,[4]]]],[55,16],[65,16],[65,16],[55,[[26,[4]]]],[55,16],[65,16],[65,49],[62,50],[62,16],[62,16],[[60,-1],5,24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[62,16],[49,16],[66,16],[49,16],[62,16],[62,16],[[65,70],65],[62,70],[62,71],[62,71],[[67,[22,[20]],4],[[26,[56]]]],[[68,[22,[20]],4],[[26,[56]]]],[[60,[22,[20]],4],16],[[67,20],[[26,[56]]]],[[68,20],[[26,[56]]]],[[60,20],16],[[60,72],16],[55,4],[62,4],[[],62],[[],55],[[],65],[[],63],[37,[[29,[62,57]]]],[[[22,[-1]]],[[29,[62,57]]],[[23,[37]]]],[69,[[26,[6]]]],0,[[65,[26,[4]]],65],[[55,56,56],[[29,[5,57]]]],[55,4],[62,4],[62,69],0,[[65,16],65],[[55,70],5],[[55,16],5],[[55,[26,[4]]],[[29,[5,57]]]],[[55,16],5],[[65,16],65],[57,[[26,[4]]]],[57,[[26,[52]]]],0,[62,56],[55,[[29,[6,57]]]],[[62,6],[[26,[56]]]],[62,56],[[62,56],66],[62,[[22,[66]]]],[[63,53],63],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],0,0,[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[65,16],65],[[65,49],65],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[],[[29,[73,57]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[74,37],[[29,[73,57]]]],[[74,62],[[29,[73,57]]]],[[74,[22,[-1]]],[[29,[73,57]]],[[23,[37]]]],[[],74],[[73,75,-1,42],5,[[25,[1]]]],[[73,75,-1],76,[[25,[1]]]],[77,77],[74,74],[73,73],[75,75],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],77],[[74,77],74],[73,75],[73,42],[[],77],[[73,75,-1],[[26,[9]]],[[25,[1]]]],[[73,75,-1],78,[[25,[1]]]],[[77,18],19],[[74,18],19],[[73,18],19],[[78,18],19],[[76,18],19],[[75,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[73,77],[77,12],[73,62],[77,[[26,[48]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[73,75,-1],16,[[25,[1]]]],[[77,12],77],[75,4],[[],[[29,[73,57]]]],[[],77],[[],74],[37,[[29,[73,57]]]],[73,75],[62,[[29,[73,57]]]],[[[22,[-1]]],[[29,[73,57]]],[[23,[37]]]],[78,[[26,[9]]]],[76,[[26,[42]]]],[73,4],[[77,[26,[48]]],77],[[75,73],5],[[73,75],5],[[73,75,1,42],5],[[73,75,1,[22,[[26,[51]]]]],[[26,[6]]]],[[74,53],74],[[74,65],74],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[73,75,1,3],5],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[64,4],[72,[[26,[30]]]],[72,[[26,[20]]]],[72,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[72,72],[64,64],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[72,72],15],[[],64],[[64,72],79],[[],64],[4,72],[64,72],[[72,72],16],[[72,18],19],[[64,18],19],[[80,18],19],[[81,18],19],[[79,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[64,20],20],[[64,72],4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[72,20],16],[72,16],[64,16],[72,16],[64,80],[80,[[26,[72]]]],[81,[[26,[72]]]],[79,[[26,[72]]]],[[72,72],[[26,[15]]]],[[64,-1],81,[[27,[20]]]],[[64,20,20],5],[[],64],[64,4],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[20,72],0,0,0,0,0,0,[50,42],[50,4],[50,82],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[42,5],[42,42],[83,83],[50,50],[84,84],[85,85],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[83,4],[85,4],[[],50],[50,42],[[],50],[50,4],[[42,37],[[5,[37,[86,[37]]]]]],[[42,[22,[20]]],[[5,[[22,[20]],[86,[[22,[20]]]]]]]],[[42,18],19],[[83,18],19],[[50,18],19],[[84,18],19],[[84,18],19],[[85,18],19],[[82,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[42,4],[[26,[7]]]],[[42,37],[[26,[7]]]],[42,[[26,[9]]]],[42,50],[42,4],[[50,6],4],[50,4],[[42,[22,[20]],[22,[20]]],[[61,[20]]]],[[42,[22,[20]],[22,[20]],[61,[20]]],5],[[42,37,37],28],[[42,37,37,28],5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[42,16],[42,83],[50,42],[50,4],[-3,[[29,[50,84]]],[[23,[37]]],[[88,[],[[87,[[26,[-1]]]]]]],[[88,[],[[87,[-2]]]]]],[83,[[26,[[26,[7]]]]]],[85,[[26,[[26,[37]]]]]],[82,[[26,[[5,[6,4,[26,[37]]]]]]]],[42,[[26,[6]]]],[50,4],[[50,6],85],[[42,[26,[6]]],5],[83,[[5,[4,[26,[4]]]]]],[85,[[5,[4,[26,[4]]]]]],[[50,6,4],[[26,[4]]]],[50,4],[42,[[22,[[26,[51]]]]]],[[50,6,4],[[26,[[5,[4,4]]]]]],[42,[[22,[[26,[51]]]]]],[84,[[26,[52]]]],[[50,6,37],[[26,[4]]]],[[50,6,4],[[26,[37]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[89,89],[[-1,-2],5,[],[]],[[90,18],19],[[89,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[[[22,[20]],-1,-2,[61,[20]]],5,[[91,[4,[61,[20]]]]],[[91,[37],[[92,[[26,[4]]]]]]]],[[37,-1,-2,28],5,[[91,[4,28]]],[[91,[37],[[92,[[26,[4]]]]]]]],0,0,0,0,0,0,0,[[93,-1],[[26,[9]]],[[91,[1],[[92,[[29,[[26,[9]],13]]]]]]]],[[93,-1],[[26,[8]]],[[91,[1],[[92,[[29,[[26,[8]],13]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[93,93],[[-1,-2],5,[],[]],[[[94,[-1]],18],19,[]],[[[95,[-1]],18],19,[]],[[[96,[-1]],18],19,[]],[[93,18],19],[[[97,[-1]],18],19,98],[[[99,[-1]],18],19,98],[[[100,[-1]],18],19,98],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[94,[-1]]],[[97,[-1]]],[]],[[[95,[-1]]],[[99,[-1]]],[]],[[[96,[-1]]],[[100,[-1]]],[]],[[[94,[-1]]],1,[]],[[[95,[-1]]],1,[]],[93,1],[[[97,[-1]]],1,[]],[[[99,[-1]]],1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[93,42,-1],[[96,[-1]]],[[91,[1,42],[[92,[[29,[5,13]]]]]]]],[[93,-1],[[94,[-1]]],[[91,[1],[[92,[[29,[[26,[8]],13]]]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[93,-1],[[95,[-1]]],[[91,[1],[[92,[[29,[[26,[9]],13]]]]]]]],[1,93],[[[94,[-1]]],[[26,[[29,[8,13]]]]],[[91,[1],[[92,[[29,[[26,[8]],13]]]]]]]],[[[95,[-1]]],[[26,[[29,[9,13]]]]],[[91,[1],[[92,[[29,[[26,[9]],13]]]]]]]],[[[96,[-1]]],[[26,[[29,[42,13]]]]],[[91,[1,42],[[92,[[29,[5,13]]]]]]]],[[[97,[-1]]],[[26,[8]]],[[91,[1],[[92,[[29,[[26,[8]],13]]]]]]]],[[[99,[-1]]],[[26,[9]]],[[91,[1],[[92,[[29,[[26,[9]],13]]]]]]]],[[[100,[-1]]],[[26,[42]]],[[91,[1,42],[[92,[[29,[5,13]]]]]]]],[-1,-2,[],[]],[[93,-1],[[29,[[26,[9]],13]]],[[91,[1],[[92,[[29,[[26,[9]],13]]]]]]]],[[93,-1],[[29,[[26,[8]],13]]],[[91,[1],[[92,[[29,[[26,[8]],13]]]]]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[[101,[-1,-2]]],-1,[],[[102,[],[[92,[-1]]]]]],[[[101,[-1,-2]],18],19,98,[[102,[],[[92,[-1]]]]]],[-1,-1,[]],[[[101,[-1,-2]]],-1,[],[[102,[],[[92,[-1]]]]]],[-1,-2,[],[]],[-1,[[101,[-2,-1]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[59,103],[59,32],[71,[[29,[5,104]]]],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[],[[29,[5,104]]]],[59,59],[71,71],[105,105],[70,70],[104,104],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[71,59],16],[71,16],[71,16],[71,16],[71,16],[71,16],[71,16],[71,16],[71,16],[[],71],[[],70],[[],71],[[59,59],16],[[71,71],16],[[59,18],19],[[71,18],19],[[105,18],19],[[70,18],19],[[104,18],19],[[104,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[32,[[26,[59]]]],[[],71],[70,20],[[71,59],71],[[71,71],71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[71,16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],[[29,[16,104]]]],[[70,[22,[20]],4],[[29,[16,104]]]],[[70,[22,[20]],4],16],[[70,[22,[20]],4],16],[[70,[22,[20]],4],[[29,[16,104]]]],[[70,[22,[20]],4],[[29,[16,104]]]],[[70,[22,[20]],4],[[29,[16,104]]]],[[70,[22,[20]],4],[[29,[16,104]]]],[71,105],[71,4],[[70,59,[22,[20]],4],16],[[70,71,[22,[20]],4],16],[[],70],[105,[[26,[59]]]],[[[22,[20]]],71],[[71,59],71],[59,59],[[71,59],5],[[71,71],5],[[70,20],70],[[71,59],5],[[71,71],5],[[71,71],5],[59,71],[[71,71],71],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[[71,71],71],[[71,[22,[20]]],5],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[106,[-1,-2]]],-1,107,[[102,[],[[92,[-1]]]]]],[[[106,[-1,-2]]],-1,107,[[102,[],[[92,[-1]]]]]],[[[108,[-1,-2]],18],19,98,[]],[[[106,[-1,-2]],18],19,[107,98],[[102,[],[[92,[-1]]]]]],[-1,-1,[]],[-1,-1,[]],[[[108,[-1,-2]]],[[106,[-1,-2]]],107,[[102,[],[[92,[-1]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[108,[-2,-1]]],[],[]],[[[106,[-1,-2]]],5,107,[[102,[],[[92,[-1]]]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[48,48],[[-1,-2],5,[],[]],[[48,[22,[20]],7],[[26,[7]]]],[[48,18],19],[-1,-1,[]],[[12,40],[[26,[48]]]],[[12,[22,[-1]]],[[26,[48]]],[[41,[40]]]],[-1,-2,[],[]],[48,16],[48,4],[48,4],[[12,[22,[-1]]],[[26,[48]]],[[23,[[22,[20]]]]]],[[48,[22,[20]],7],[[26,[7]]]],[-1,-2,[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[109,110],[6,110],[56,110],[109,32],[6,32],[56,32],[109,33],[6,33],[56,33],[109,4],[6,4],[56,4],[111,33],[31,33],[112,33],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[51,51],[109,109],[111,111],[56,56],[31,31],[112,112],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[51,51],15],[[109,109],15],[[56,56],15],[[],109],[[],56],[[51,51],16],[[109,109],16],[[111,111],16],[[56,56],16],[[31,31],16],[[112,112],16],[[51,18],19],[[109,18],19],[[111,18],19],[[111,18],19],[[56,18],19],[[31,18],19],[[31,18],19],[[112,18],19],[[112,18],19],[-1,-1,[]],[-1,-1,[]],[20,109],[-1,-1,[]],[20,56],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[86,[20]]],[[29,[109,111]]]],[[[86,[20]]],[[29,[6,31]]]],[[[86,[20]]],[[29,[56,112]]]],[[[86,[20]]],109],[[[86,[20]]],6],[[[86,[20]]],56],[51,4],[[51,-1],5,24],[[109,-1],5,24],[[56,-1],5,24],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[4,109],[4,6],[4,56],[4,[[26,[51]]]],[4,[[29,[109,111]]]],[4,[[29,[6,31]]]],[4,[[29,[56,112]]]],[4,109],[4,6],[4,56],[109,4],[6,4],[56,4],[[51,51],[[26,[15]]]],[[109,109],[[26,[15]]]],[[56,56],[[26,[15]]]],[109,[[86,[20]]]],[6,[[86,[20]]]],[56,[[86,[20]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],[-1,28,[]],[-1,28,[]],[-1,[[29,[-2]]],[],[]],[33,[[29,[109,111]]]],[4,[[29,[109,111]]]],[32,[[29,[109,111]]]],[30,[[29,[109,111]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[33,[[29,[56,112]]]],[-1,[[29,[-2]]],[],[]],[32,[[29,[56,112]]]],[30,[[29,[56,112]]]],[4,[[29,[56,112]]]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],[-1,34,[]],0,[[113,2],113],[-1,-2,[],[]],[-1,-2,[],[]],[113,113],[[-1,-2],5,[],[]],[[113,18],19],[-1,-1,[]],[1,113],[1,113],[113,2],[113,[[26,[20]]]],[-1,-2,[],[]],[[113,[26,[20]]],113],[[],113],[-1,-2,[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[53,16],53],[53,53],[[-1,-2],5,[],[]],[[53,16],53],[[],53],[[53,16],53],[[53,18],19],[-1,-1,[]],[53,16],[53,16],[53,16],[53,16],[53,20],[53,16],[53,32],[53,16],[53,16],[53,16],[53,16],[[53,16],53],[-1,-2,[],[]],[[53,20],53],[[53,16],53],[[53,32],53],[[],53],[[53,16],53],[37,[[29,[40,54]]]],[[[22,[-1]]],[[29,[[61,[40]],54]]],[[23,[37]]]],[[[22,[-1]],53],[[29,[[61,[40]],54]]],[[23,[37]]]],[[37,53],[[29,[40,54]]]],[[53,16],53],[-1,-2,[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[[53,16],53],[[53,16],53],0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],0,[[[114,[-1,-2]],18],19,[98,21],98],[[115,18],19],[[115,18],19],[[116,18],19],[[116,18],19],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,28,[]],[-1,28,[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,[[29,[-2]]],[],[]],[-1,34,[]],[-1,34,[]],[-1,34,[]]],"c":[508,566],"p":[[5,"Input",0],[6,"Anchored",0],[5,"PatternSet",0],[1,"usize"],[1,"tuple"],[5,"PatternID",0],[5,"Span",0],[5,"HalfMatch",0],[5,"Match",0],[5,"PatternSetInsertError",0],[5,"PatternSetIter",0],[6,"MatchKind",0],[5,"MatchError",0],[6,"MatchErrorKind",0],[6,"Ordering",1584],[1,"bool"],[5,"Range",1585],[5,"Formatter",1586],[8,"Result",1586],[1,"u8"],[10,"Sized",1587],[1,"slice"],[10,"AsRef",1588],[10,"Hasher",1589],[10,"Into",1588],[6,"Option",1590],[10,"RangeBounds",1585],[5,"String",1591],[6,"Result",1592],[1,"u16"],[5,"PatternIDError",1336],[1,"u32"],[1,"u64"],[5,"TypeId",1593],[5,"Config",252],[5,"Builder",252],[1,"str"],[5,"Regex",252],[5,"BuildError",252],[5,"Hir",1594],[10,"Borrow",1595],[5,"Captures",902],[5,"CapturesMatches",252],[5,"Cache",252],[5,"FindMatches",252],[5,"Split",252],[5,"SplitN",252],[5,"Prefilter",1316],[6,"WhichCaptures",446],[5,"GroupInfo",902],[5,"NonMaxUsize",1336],[10,"Error",1596],[5,"Config",1511],[6,"Error",1597],[5,"Builder",446],[5,"StateID",1336],[5,"BuildError",446],[5,"Arc",1598],[6,"Look",1150],[5,"Transition",446],[5,"Vec",1599],[5,"NFA",446],[5,"Compiler",446],[5,"ByteClasses",821],[5,"Config",446],[6,"State",446],[5,"SparseTransitions",446],[5,"DenseTransitions",446],[5,"PatternIter",446],[5,"LookMatcher",1150],[5,"LookSet",1150],[5,"Unit",821],[5,"PikeVM",701],[5,"Builder",701],[5,"Cache",701],[5,"CapturesMatches",701],[5,"Config",701],[5,"FindMatches",701],[5,"ByteClassElements",821],[5,"ByteClassIter",821],[5,"ByteClassRepresentatives",821],[5,"GroupInfoAllNames",902],[5,"CapturesPatternIter",902],[5,"GroupInfoError",902],[5,"GroupInfoPatternNames",902],[1,"array"],[17,"Item"],[10,"IntoIterator",1600],[5,"DebugByte",1021],[5,"DebugHaystack",1021],[10,"FnMut",1601],[17,"Output"],[5,"Searcher",1044],[5,"TryHalfMatchesIter",1044],[5,"TryMatchesIter",1044],[5,"TryCapturesIter",1044],[5,"HalfMatchesIter",1044],[10,"Debug",1586],[5,"MatchesIter",1044],[5,"CapturesIter",1044],[5,"Lazy",1138],[10,"Fn",1601],[1,"char"],[5,"UnicodeWordBoundaryError",1150],[5,"LookSetIter",1150],[5,"PoolGuard",1293],[10,"Send",1587],[5,"Pool",1293],[5,"SmallIndex",1336],[1,"i32"],[5,"SmallIndexError",1336],[5,"StateIDError",1336],[5,"Config",1492],[5,"AlignAs",1551],[5,"SerializeError",1551],[5,"DeserializeError",1551],[15,"Quit",247],[15,"HaystackTooLong",247],[15,"UnsupportedAnchored",247],[15,"GaveUp",247],[15,"BinaryUnion",690],[15,"Union",690],[15,"Capture",690],[15,"Look",690],[15,"Match",690],[15,"ByteRange",690]],"b":[[82,"impl-PartialEq%3CRange%3Cusize%3E%3E-for-Span"],[83,"impl-PartialEq-for-Span"],[97,"impl-Display-for-PatternSetInsertError"],[98,"impl-Debug-for-PatternSetInsertError"],[102,"impl-Display-for-MatchError"],[103,"impl-Debug-for-MatchError"],[205,"impl-TryFrom%3Cu16%3E-for-PatternID"],[206,"impl-TryFrom%3Cusize%3E-for-PatternID"],[207,"impl-TryFrom%3Cu32%3E-for-PatternID"],[208,"impl-TryFrom%3Cu64%3E-for-PatternID"],[312,"impl-Display-for-BuildError"],[313,"impl-Debug-for-BuildError"],[547,"impl-Display-for-BuildError"],[548,"impl-Debug-for-BuildError"],[945,"impl-Debug-for-GroupInfoError"],[946,"impl-Display-for-GroupInfoError"],[1216,"impl-Debug-for-UnicodeWordBoundaryError"],[1217,"impl-Display-for-UnicodeWordBoundaryError"],[1407,"impl-Display-for-SmallIndexError"],[1408,"impl-Debug-for-SmallIndexError"],[1410,"impl-Debug-for-PatternIDError"],[1411,"impl-Display-for-PatternIDError"],[1412,"impl-Debug-for-StateIDError"],[1413,"impl-Display-for-StateIDError"],[1467,"impl-TryFrom%3Cu64%3E-for-SmallIndex"],[1468,"impl-TryFrom%3Cusize%3E-for-SmallIndex"],[1469,"impl-TryFrom%3Cu32%3E-for-SmallIndex"],[1470,"impl-TryFrom%3Cu16%3E-for-SmallIndex"],[1473,"impl-TryFrom%3Cu64%3E-for-StateID"],[1475,"impl-TryFrom%3Cu32%3E-for-StateID"],[1476,"impl-TryFrom%3Cu16%3E-for-StateID"],[1477,"impl-TryFrom%3Cusize%3E-for-StateID"],[1563,"impl-Display-for-SerializeError"],[1564,"impl-Debug-for-SerializeError"],[1565,"impl-Debug-for-DeserializeError"],[1566,"impl-Display-for-DeserializeError"]]}],\ -["regex_syntax",{"doc":"This crate provides a robust regular expression parser.","t":"GPFFPFCNNNNNNNNNNNNNNNNNNNNHHNNNNNNNNNNNNCNNNNNHHHHNNNNNNHNNNNNNNNNNNNNNNHNNNNNCNPPFPPPFPGGPPPPPPPPPFPPPFGFPPFPGPPGFGGFFPFPGGPPFFPPPPPPPPPPPPPRFGPPPPPPGPPPPPPFPFGPPFPGPPPPPPPPGPPPPFPPGPPPPPPPPPPPPPRPFPPPPFPPPPGPFGFPPPFPGPPPPPPPPPPPPPPPPPPPPKFPPPPPPPPPPPPPNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOOOOOOOOOONOOOOONNOOCNNNCNNONNNNOOOOOOOOOOOOOOOOOOONNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNOOOOOOOOFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNPPPPPPPPPPFPFGPFFFFFFPGPPPPRFGFGPPFPGPFFRFFPPPPPPPPPPKPPPPPPPPPPPPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNONNNNNONNNNONNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNGFFPFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPFGFNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNN","n":["Error","Parse","Parser","ParserBuilder","Translate","UnicodeWordError","ast","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","case_insensitive","clone","clone","clone","clone_into","clone_into","clone_into","crlf","default","dot_matches_new_line","eq","escape","escape_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","hir","ignore_whitespace","into","into","into","into","is_escapeable_character","is_meta_character","is_word_byte","is_word_character","line_terminator","multi_line","nest_limit","new","new","octal","parse","parse","swap_greed","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_is_word_character","type_id","type_id","type_id","type_id","unicode","utf8","utf8","Alnum","Alpha","Alternation","Alternation","Ascii","Ascii","Assertion","Assertion","AssertionKind","Ast","AtLeast","Bell","BinaryOp","Blank","Bounded","Bracketed","CRLF","CaptureIndex","CaptureLimitExceeded","CaptureName","CaptureName","CarriageReturn","CaseInsensitive","ClassAscii","ClassAsciiKind","ClassBracketed","ClassBracketed","ClassEscapeInvalid","ClassPerl","ClassPerl","ClassPerlKind","ClassRangeInvalid","ClassRangeLiteral","ClassSet","ClassSetBinaryOp","ClassSetBinaryOpKind","ClassSetItem","ClassSetRange","ClassSetUnion","ClassUnclosed","ClassUnicode","ClassUnicode","ClassUnicodeKind","ClassUnicodeOpKind","Cntrl","Colon","Comment","Concat","Concat","DecimalEmpty","DecimalInvalid","Difference","Digit","Digit","Dot","DotMatchesNewLine","Empty","Empty","EndLine","EndText","Equal","Err","Error","ErrorKind","EscapeHexEmpty","EscapeHexInvalid","EscapeHexInvalidDigit","EscapeUnexpectedEof","EscapeUnrecognized","Exactly","Flag","Flag","FlagDanglingNegation","FlagDuplicate","FlagRepeatedNegation","FlagUnexpectedEof","FlagUnrecognized","Flags","Flags","FlagsItem","FlagsItemKind","FormFeed","Graph","Group","Group","GroupKind","GroupNameDuplicate","GroupNameEmpty","GroupNameInvalid","GroupNameUnexpectedEof","GroupUnclosed","GroupUnopened","HexBrace","HexFixed","HexLiteralKind","IgnoreWhitespace","Intersection","Item","LineFeed","Literal","Literal","Literal","LiteralKind","Lower","Meta","MultiLine","Named","NamedValue","Negation","NestLimitExceeded","NonCapturing","NotEqual","NotWordBoundary","Octal","OneLetter","OneOrMore","Output","Perl","Position","Print","Punct","Range","Range","Repetition","Repetition","RepetitionCountDecimalEmpty","RepetitionCountInvalid","RepetitionCountUnclosed","RepetitionKind","RepetitionMissing","RepetitionOp","RepetitionRange","SetFlags","Space","Space","Space","Span","Special","SpecialLiteralKind","SpecialWordBoundaryUnclosed","SpecialWordBoundaryUnrecognized","SpecialWordOrRepetitionUnexpectedEof","StartLine","StartText","Superfluous","SwapGreed","SymmetricDifference","Tab","Unicode","Unicode","UnicodeClassInvalid","UnicodeLong","UnicodeShort","Union","UnsupportedBackreference","UnsupportedLookAround","Upper","Verbatim","VerticalTab","Visitor","WithComments","Word","Word","WordBoundary","WordBoundaryEnd","WordBoundaryEndAngle","WordBoundaryEndHalf","WordBoundaryStart","WordBoundaryStartAngle","WordBoundaryStartHalf","X","Xdigit","ZeroOrMore","ZeroOrOne","add_item","alternation","assertion","ast","ast","ast","asts","asts","auxiliary_span","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","byte","c","capture_index","class_bracketed","class_perl","class_unicode","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column","comment","comments","concat","digits","dot","drop","drop","empty","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","finish","flag_state","flags","flags","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_name","greedy","group","index","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_ast","into_ast","into_item","is_capturing","is_empty","is_empty","is_equal","is_negated","is_negation","is_one_line","is_valid","is_valid","items","items","kind","kind","kind","kind","kind","kind","kind","kind","kind","kind","kind","lhs","line","literal","name","negated","negated","negated","negated","new","new","offset","op","parse","partial_cmp","partial_cmp","pattern","print","push","repetition","rhs","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","splat","start","start","start","start","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","visit","visit_alternation_in","visit_alternation_in","visit_class_set_binary_op_in","visit_class_set_binary_op_in","visit_class_set_binary_op_post","visit_class_set_binary_op_post","visit_class_set_binary_op_pre","visit_class_set_binary_op_pre","visit_class_set_item_post","visit_class_set_item_post","visit_class_set_item_pre","visit_class_set_item_pre","visit_concat_in","visit_concat_in","visit_post","visit_post","visit_pre","visit_pre","with_end","with_start","name","op","value","original","original","original","name","starts_with_p","Parser","ParserBuilder","borrow","borrow","borrow_mut","borrow_mut","build","clone","clone","clone_into","clone_into","default","fmt","fmt","from","from","ignore_whitespace","into","into","nest_limit","new","new","octal","parse","parse_with_comments","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","Printer","borrow","borrow_mut","fmt","from","into","new","print","try_from","try_into","type_id","Alternation","AnyByte","AnyByteExcept","AnyByteExceptCRLF","AnyByteExceptLF","AnyChar","AnyCharExcept","AnyCharExceptCRLF","AnyCharExceptLF","Bytes","Capture","Capture","CaseFoldError","Class","Class","ClassBytes","ClassBytesIter","ClassBytesRange","ClassUnicode","ClassUnicodeIter","ClassUnicodeRange","Concat","Dot","Empty","End","EndCRLF","EndLF","Err","Error","ErrorKind","Hir","HirKind","InvalidLineTerminator","InvalidUtf8","Literal","Literal","Look","Look","LookSet","LookSetIter","Output","Properties","Repetition","Repetition","Start","StartCRLF","StartLF","Unicode","UnicodeCaseUnavailable","UnicodeNotAllowed","UnicodePerlClassNotFound","UnicodePropertyNotFound","UnicodePropertyValueNotFound","Visitor","WordAscii","WordAsciiNegate","WordEndAscii","WordEndHalfAscii","WordEndHalfUnicode","WordEndUnicode","WordStartAscii","WordStartHalfAscii","WordStartHalfUnicode","WordStartUnicode","WordUnicode","WordUnicodeNegate","alternation","as_char","as_repr","bits","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capture","case_fold_simple","case_fold_simple","case_fold_simple","class","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","concat","contains","contains_anchor","contains_anchor_crlf","contains_anchor_haystack","contains_anchor_lf","contains_anchor_line","contains_word","contains_word_ascii","contains_word_unicode","default","default","default","difference","difference","dot","drop","empty","empty","empty","empty","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","explicit_captures_len","fail","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_repr","full","greedy","index","insert","intersect","intersect","intersect","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_kind","is_alternation_literal","is_ascii","is_ascii","is_empty","is_empty","is_literal","is_utf8","is_utf8","iter","iter","iter","kind","kind","len","len","len","literal","literal","literal","literal","literal","look","look_set","look_set_prefix","look_set_prefix_any","look_set_suffix","look_set_suffix_any","max","maximum_len","maximum_len","maximum_len","maximum_len","memory_usage","min","minimum_len","minimum_len","minimum_len","minimum_len","name","negate","negate","negate","new","new","new","new","next","next","next","partial_cmp","partial_cmp","pattern","print","properties","push","push","ranges","ranges","read_repr","remove","repetition","reversed","set_insert","set_intersect","set_remove","set_subtract","set_union","singleton","span","start","start","start","start","static_explicit_captures_len","sub","sub","subs","subtract","symmetric_difference","symmetric_difference","to_byte_class","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_unicode_class","translate","try_case_fold_simple","try_case_fold_simple","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","union","visit","visit_alternation_in","visit_alternation_in","visit_concat_in","visit_concat_in","visit_post","visit_post","visit_pre","visit_pre","with","write_repr","ExtractKind","Extractor","Literal","Prefix","Seq","Suffix","as_bytes","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cross_forward","cross_reverse","dedup","default","default","empty","eq","eq","exact","extend","extract","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_iter","inexact","infinite","into","into","into","into","into_bytes","is_empty","is_empty","is_exact","is_exact","is_finite","is_inexact","is_prefix","is_suffix","keep_first_bytes","keep_first_bytes","keep_last_bytes","keep_last_bytes","kind","len","len","limit_class","limit_literal_len","limit_repeat","limit_total","literals","longest_common_prefix","longest_common_suffix","make_inexact","make_inexact","make_infinite","max_cross_len","max_literal_len","max_union_len","min_literal_len","minimize_by_preference","new","new","optimize_for_prefix_by_preference","optimize_for_suffix_by_preference","partial_cmp","push","rank","reverse","reverse_literals","singleton","sort","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","union_into_empty","Printer","borrow","borrow_mut","fmt","from","into","new","print","try_from","try_into","type_id","Translator","TranslatorBuilder","borrow","borrow","borrow_mut","borrow_mut","build","case_insensitive","clone","clone","clone_into","clone_into","crlf","default","dot_matches_new_line","fmt","fmt","from","from","into","into","line_terminator","multi_line","new","new","swap_greed","to_owned","to_owned","translate","try_from","try_from","try_into","try_into","type_id","type_id","unicode","utf8","Four","One","Three","Two","Utf8Range","Utf8Sequence","Utf8Sequences","as_slice","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","cmp","end","eq","eq","fmt","fmt","fmt","from","from","from","into","into","into","into_iter","into_iter","len","matches","matches","new","next","partial_cmp","partial_cmp","reverse","start","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"regex_syntax"],[81,"regex_syntax::ast"],[885,"regex_syntax::ast::ClassUnicodeKind"],[888,"regex_syntax::ast::ErrorKind"],[891,"regex_syntax::ast::GroupKind"],[893,"regex_syntax::ast::parse"],[926,"regex_syntax::ast::print"],[937,"regex_syntax::hir"],[1387,"regex_syntax::hir::literal"],[1500,"regex_syntax::hir::print"],[1511,"regex_syntax::hir::translate"],[1548,"regex_syntax::utf8"],[1602,"alloc::string"],[1603,"core::fmt"],[1604,"core::fmt"],[1605,"core::any"],[1606,"core::option"],[1607,"core::cmp"],[1608,"core::fmt"],[1609,"alloc::boxed"],[1610,"core::convert"],[1611,"core::iter::traits::collect"],[1612,"core::borrow"],[1613,"core::convert"]],"d":["This error type encompasses any error that can be returned …","An error that occurred while translating concrete syntax …","A convenience parser for regular expressions.","A builder for a regular expression parser.","An error that occurred while translating abstract syntax …","An error that occurs when the Unicode-aware \\\\w class is …","Defines an abstract syntax for regular expressions.","","","","","","","","","Build a parser from this configuration with the given …","Enable or disable the case insensitive flag by default.","","","","","","","Enable or disable the CRLF mode flag by default.","","Enable or disable the “dot matches any character” flag …","","Escapes all regular expression meta characters in text.","Escapes all meta characters in text and writes the result …","","","","","","","Returns the argument unchanged.","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Defines a high-level intermediate (HIR) representation for …","Enable verbose mode in the regular expression.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the given character can be escaped in a …","Returns true if the given character has significance in a …","Returns true if and only if the given character is an …","Returns true if and only if the given character is a …","Sets the line terminator for use with (?u-s:.) and (?-us:.)…","Enable or disable the multi-line matching flag by default.","Set the nesting limit for this parser.","Create a new parser builder with a default configuration.","Create a new parser with a default configuration.","Whether to support octal syntax or not.","A convenience routine for parsing a regex using default …","Parse the regular expression into a high level intermediate","Enable or disable the “swap greed” flag by default.","","","","","","","","","","","","","","Returns true if and only if the given character is a …","","","","","Enable or disable the Unicode flag (u) by default.","Converts ranges of Unicode scalar values to equivalent …","When disabled, translation will permit the construction of …","[0-9A-Za-z]","[A-Za-z]","An alternation of regular expressions.","An alternation of regular expressions.","[\\\\x00-\\\\x7F]","An ASCII character class, e.g., [:alnum:] or [:punct:].","A single zero-width assertion.","A single zero-width assertion.","An assertion kind.","An abstract syntax tree for a single regular expression.","{m,}","Bell, spelled \\\\a (\\\\x07).","A single binary operation (i.e., &&, – or ~~).","[ \\\\t]","{m,n}","A bracketed character class set, which may contain zero or …","R","(a)","The capturing group limit was exceeded.","A capture name.","(?<name>a) or (?P<name>a)","Carriage return, spelled \\\\r (\\\\x0D).","i","An ASCII character class.","The available ASCII character classes.","A bracketed character class, e.g., [a-z0-9].","A single bracketed character class set, which may contain …","An invalid escape sequence was found in a character class …","A Perl character class.","A single perl character class, e.g., \\\\d or \\\\W.","The available Perl character classes.","An invalid character class range was found. An invalid …","An invalid range boundary was found in a character class. …","A character class set.","A Unicode character class set operation.","The type of a Unicode character class set operation.","A single component of a character class set.","A single character class range in a set.","A union of items inside a character class set.","An opening [ was found with no corresponding closing ].","A Unicode character class.","A single Unicode character class, e.g., \\\\pL or \\\\p{Greek}.","The available forms of Unicode character classes.","The type of op used in a Unicode character class.","[\\\\x00-\\\\x1F\\\\x7F]","A property set to a specific value using a colon, e.g., …","A comment from a regular expression with an associated …","A concatenation of regular expressions.","A concatenation of regular expressions.","Note that this error variant is no longer used. Namely, a …","An invalid decimal number was given where one was expected.","The difference of two sets, e.g., \\\\pN--[0-9].","Decimal numbers.","[0-9]","The “any character” class.","s","An empty regex that matches everything.","An empty item.","$","\\\\z","A property set to a specific value, e.g., \\\\p{scx=Katakana}.","An error that visiting an AST might return.","An error that occurred while parsing a regular expression …","The type of an error that occurred while building an AST.","A bracketed hex literal was empty.","A bracketed hex literal did not correspond to a Unicode …","An invalid hexadecimal digit was found.","EOF was found before an escape sequence was completed.","An unrecognized escape sequence.","{m}","A single flag.","A single flag in a group.","A dangling negation was used when setting flags, e.g., i-.","A flag was used twice, e.g., i-i.","The negation operator was used twice, e.g., -i-s.","Expected a flag but got EOF, e.g., (?.","Unrecognized flag, e.g., a.","A group of flags.","A set of flags, e.g., (?is).","A single item in a group of flags.","The kind of an item in a group of flags.","Form feed, spelled \\\\f (\\\\x0C).","[!-~]","A grouped regular expression.","A grouped regular expression.","The kind of a group.","A duplicate capture name was found.","A capture group name is empty, e.g., (?P<>abc).","An invalid character was seen for a capture group name. …","A closing > could not be found for a capture group name.","An unclosed group, e.g., (ab.","An unopened group, e.g., ab).","The literal is written as a hex code with a bracketed …","The literal is written as a hex code with a fixed number …","The type of a Unicode hex literal.","x","The intersection of two sets, e.g., \\\\pN&&[a-z].","An item, which can be a single literal, range, nested …","Line feed, spelled \\\\n (\\\\x0A).","A single literal expression.","A single character literal, which includes escape …","A single literal.","The kind of a single literal expression.","[a-z]","The literal is written as an escape because it is …","m","A binary property, general category or script. The string …","A property name and an associated value.","A negation operator applied to all subsequent flags in the …","The nest limit was exceeded. The limit stored here is the …","(?:a) and (?i:a)","A property that isn’t a particular value, e.g., …","\\\\B","The literal is written as an octal escape, e.g., \\\\141.","A one letter abbreviated class, e.g., \\\\pN.","+","The result of visiting an AST.","A perl character class, e.g., \\\\d or \\\\W.","A single position in a regular expression.","[ -~]","[!-/:-@\\\\[-{-~]`","A range between two literals.","{m,n}","A repetition operation applied to a regular expression.","A repetition operator applied to an arbitrary regular …","An opening { was not followed by a valid decimal value. …","The range provided in a counted repetition operator is …","An opening { was found with no corresponding closing }.","The kind of a repetition operator.","A repetition operator was applied to a missing …","The repetition operator itself.","A range repetition operator.","A group of flags that is not applied to a particular …","Space, spelled \\\\ (\\\\x20). Note that this can only appear …","Whitespace.","[\\\\t\\\\n\\\\v\\\\f\\\\r ]","Span represents the position information of a single AST …","The literal is written as a specially recognized escape, …","The type of a special literal.","The special word boundary syntax, \\\\b{something}, was used, …","The special word boundary syntax, \\\\b{something}, was used, …","The syntax \\\\b{ was observed, but afterwards the end of the …","^","\\\\A","The literal is written as an escape despite the fact that …","U","The symmetric difference of two sets. The symmetric …","Tab, spelled \\\\t (\\\\x09).","A Unicode character class, e.g., \\\\pL or \\\\p{Greek}.","u","The Unicode class is not valid. This typically occurs when …","A \\\\U prefix. When used without brackets, this form is …","A \\\\u prefix. When used without brackets, this form is …","A union of items.","When octal support is disabled, this error is produced …","When syntax similar to PCRE’s look-around is used, this …","[A-Z]","The literal is written verbatim, e.g., a or .","Vertical tab, spelled \\\\v (\\\\x0B).","A trait for visiting an abstract syntax tree (AST) in …","An abstract syntax tree for a singular expression along …","Word characters.","[0-9A-Za-z_]","\\\\b","\\\\b{end}","\\\\> (alias for \\\\b{end})","\\\\b{end-half}","\\\\b{start}","\\\\< (alias for \\\\b{start})","\\\\b{start-half}","A \\\\x prefix. When used without brackets, this form is …","[0-9A-Fa-f]","*","?","Add the given item to this sequence of flags.","Create a “alternation” AST item.","Create a “assertion” AST item.","The actual ast.","The regular expression under repetition.","The regular expression in this group.","The alternate regular expressions.","The concatenation regular expressions.","Return an auxiliary span. This span exists only for some …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If this literal was written as a \\\\x hex escape, then this …","The Unicode scalar value corresponding to this literal.","Returns the capture index of this group, if this is a …","Create a “bracketed class” AST item.","Create a “Perl class” AST item.","Create a “Unicode class” AST item.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The approximate column number, starting at 1.","The comment text, starting with the first character …","All comments found in the original regular expression.","Create a “concat” AST item.","The number of digits that must be used with this literal …","Create a “dot” AST item.","","","Create an “empty” AST item.","The end byte offset.","The end of this range.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","All implementors of Visitor must provide a finish method, …","Returns the state of the given flag in this set.","Create a “flags” AST item.","If this group is non-capturing, then this returns the …","The actual sequence of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the corresponding ClassAsciiKind variant for the …","Whether this operation was applied greedily or not.","Create a “group” AST item.","The capture index.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return this alternation as an AST.","Return this concatenation as an AST.","Return this union as a character class set item.","Returns true if and only if this group is capturing.","Returns true if and only if this span is empty. That is, …","Return true if and only if this Ast is empty.","Whether the op is an equality op or not.","Returns true if this class has been negated.","Returns true if and only if this item is a negation …","Returns true if and only if this span occurs on a single …","Returns true if and only if this character class range is …","Returns true if and only if this repetition range is valid.","The sequence of items that make up this union.","A sequence of flag items. Each item is either a flag or a …","Return the type of this error.","The kind of this literal.","The kind of Perl class.","The kind of ASCII class.","The kind of Unicode class.","The type of this set. A set is either a normal union of …","The type of this set operation.","The assertion kind, e.g., \\\\b or ^.","The type of operation.","The kind of this group.","The kind of this item.","The left hand side of the operation.","The line number, starting at 1.","Create a “literal” AST item.","The capture name.","Whether the class is negated or not. e.g., \\\\d is not …","Whether the class is negated or not. e.g., [[:alpha:]] is …","Whether this class is negated or not.","Whether this class is negated or not. e.g., [a] is not …","Create a new span with the given positions.","Create a new position with the given information.","The absolute offset of this position, starting at 0 from …","The actual operation.","This module provides a regular expression parser.","","","The original pattern string in which this error occurred.","This module provides a regular expression printer for Ast.","Push a new item in this union.","Create a “repetition” AST item.","The right hand side of the operation.","Return the span at which this error occurred.","Return the span of this abstract syntax tree.","Return the span of this character class set.","Return the span of this character class set item.","The span of this comment, including the beginning # and …","The span of this alternation.","The span of this concatenation.","The span of this literal.","The span of this class.","The span of this class.","The span of this class.","The span of this class.","The span of this range.","The span of the items in this operation. e.g., the a-z0-9 …","The span of this operation. e.g., the a-z--[h-p] in …","The span of this assertion.","The span of this operation.","The span of this operator. This includes things like +, *? …","The span of this group.","The span of this capture name.","The span of these flags, including the grouping …","The span of this group of flags.","The span of this item.","Create a new span using the given position as the start …","This method is called before beginning traversal of the …","This method is called before beginning traversal of the …","The start byte offset.","The start of this range.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Build a set from a union.","Executes an implementation of Visitor in constant stack …","This method is called between child nodes of an Alternation…","This method is called between child nodes of an Alternation…","This method is called between the left hand and right hand …","This method is called between the left hand and right hand …","This method is called on every ClassSetBinaryOp after …","This method is called on every ClassSetBinaryOp after …","This method is called on every ClassSetBinaryOp before …","This method is called on every ClassSetBinaryOp before …","This method is called on every ClassSetItem after …","This method is called on every ClassSetItem after …","This method is called on every ClassSetItem before …","This method is called on every ClassSetItem before …","This method is called between child nodes of a …","This method is called between child nodes of a …","This method is called on an Ast after descending all of …","This method is called on an Ast after descending all of …","This method is called on an Ast before descending into …","This method is called on an Ast before descending into …","Create a new span by replacing the ending the position …","Create a new span by replacing the starting the position …","The property name (which may be empty).","The type of Unicode op used to associate name with value.","The property value (which may be empty).","The position of the original flag. The error position …","The position of the original negation operator. The error …","The position of the initial occurrence of the capture …","The capture name.","True if the ?P< syntax is used and false if the ?< syntax …","A regular expression parser.","A builder for a regular expression parser.","","","","","Build a parser from this configuration with the given …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Enable verbose mode in the regular expression.","Calls U::from(self).","Calls U::from(self).","Set the nesting limit for this parser.","Create a new parser builder with a default configuration.","Create a new parser with a default configuration.","Whether to support octal syntax or not.","Parse the regular expression into an abstract syntax tree.","Parse the regular expression and return an abstract syntax …","","","","","","","","","A printer for a regular expression abstract syntax tree.","","","","Returns the argument unchanged.","Calls U::from(self).","Create a new printer.","Print the given Ast to the given writer. The writer must …","","","","An alternation of expressions.","Matches any byte value.","Matches any byte value except for the u8 given.","Matches any byte value except for \\\\r and \\\\n.","Matches any byte value except for \\\\n.","Matches the UTF-8 encoding of any Unicode scalar value.","Matches the UTF-8 encoding of any Unicode scalar value …","Matches the UTF-8 encoding of any Unicode scalar value …","Matches the UTF-8 encoding of any Unicode scalar value …","A set of characters represented by arbitrary bytes (one …","The high-level intermediate representation for a capturing …","A capturing group, which contains a sub-expression.","An error that occurs when Unicode-aware simple case …","The high-level intermediate representation of a character …","A single character class that matches any of the …","A set of characters represented by arbitrary bytes.","An iterator over all ranges in a byte character class.","A single range of characters represented by arbitrary …","A set of characters represented by Unicode scalar values.","An iterator over all ranges in a Unicode character class.","A single range of characters represented by Unicode scalar …","A concatenation of expressions.","A type describing the different flavors of ..","The empty regular expression, which matches everything, …","Match the end of text. Specifically, this matches at the …","Match the end of a line or the end of text. Specifically, …","Match the end of a line or the end of text. Specifically, …","An error that visiting an HIR might return.","An error that can occur while translating an Ast to a Hir.","The type of an error that occurred while building an Hir.","A high-level intermediate representation (HIR) for a …","The underlying kind of an arbitrary Hir expression.","This error occurs when one uses a non-ASCII byte for a …","This error occurs when translating a pattern that could …","The high-level intermediate representation of a literal.","A literalstring that matches exactly these bytes.","The high-level intermediate representation for a …","A look-around assertion. A look-around match always has …","A set of look-around assertions.","An iterator over all look-around assertions in a LookSet.","The result of visiting an HIR.","A type that collects various properties of an HIR value.","The high-level intermediate representation of a repetition …","A repetition operation applied to a sub-expression.","Match the beginning of text. Specifically, this matches at …","Match the beginning of a line or the beginning of text. …","Match the beginning of a line or the beginning of text. …","A set of characters represented by Unicode scalar values.","This occurs when the Unicode simple case mapping tables …","This error occurs when a Unicode feature is used when …","This occurs when a Unicode-aware Perl character class (\\\\w, …","This occurs when an unrecognized Unicode property name …","This occurs when an unrecognized Unicode property value …","A trait for visiting the high-level IR (HIR) in depth …","Match an ASCII-only word boundary. That is, this matches a …","Match an ASCII-only negation of a word boundary.","Match the end of an ASCII-only word boundary. That is, …","Match the end half of an ASCII-only word boundary. That …","Match the end half of a Unicode word boundary. That is, …","Match the end of a Unicode word boundary. That is, this …","Match the start of an ASCII-only word boundary. That is, …","Match the start half of an ASCII-only word boundary. That …","Match the start half of a Unicode word boundary. That is, …","Match the start of a Unicode word boundary. That is, this …","Match a Unicode-aware word boundary. That is, this matches …","Match a Unicode-aware negation of a word boundary.","Returns the alternation of the given expressions.","Returns a convenient single codepoint representation of …","Return the underlying representation of this look-around …","The underlying representation this set is exposed to make …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Creates a capture HIR expression.","Apply Unicode simple case folding to this character class, …","Expand this character class such that it contains all case …","Expand this character class such that it contains all case …","Creates a class HIR expression. The class may either be …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the concatenation of the given expressions.","Returns true if and only if the given look-around …","Returns true if and only if this set contains any anchor …","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any word …","Returns true if and only if this set contains any ASCII …","Returns true if and only if this set contains any Unicode …","","","","Subtract the given character class from this character …","Subtract the given byte class from this byte class, in …","Returns an HIR expression for ..","","Returns an empty HIR expression.","Create a new class with no ranges.","Create a new class with no ranges.","Create an empty set of look-around assertions.","Return the end of this range.","Return the end of this range.","","","","","","","","","","","","","","","","","Returns the total number of explicit capturing groups in …","Returns an HIR expression that can never match anything. …","All implementors of Visitor must provide a finish method, …","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Given the underlying representation of a Look value, …","Create a full set of look-around assertions.","Whether this repetition operator is greedy or not. A …","The capture index of the capture.","Return a new set that is equivalent to the original, but …","Intersect this character class with the given character …","Intersect this byte class with the given byte class, in …","Returns a new set that is the intersection of this and the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Consumes ownership of this HIR expression and returns its …","Return true if and only if this HIR is either a simple …","Returns true if and only if this character class will …","Returns true if and only if this character class will …","Returns true if and only if this character class is empty. …","Returns true if and only if this set is empty.","Return true if and only if this HIR is a simple literal. …","Returns true if and only if this character class will only …","Return true if and only if the corresponding HIR will …","Return an iterator over all ranges in this class.","Return an iterator over all ranges in this class.","Returns an iterator over all of the look-around assertions …","Return the type of this error.","Returns a reference to the underlying HIR kind.","Returns the number of codepoints in this range.","Returns the number of bytes in this range.","Returns the total number of look-around assertions in this …","Provides literal extraction from Hir expressions.","Creates a literal HIR expression.","If this class consists of exactly one element (whether a …","If this class consists of exactly one codepoint, then …","If this class consists of exactly one byte, then return it …","Creates a look-around assertion HIR expression.","Returns a set of all look-around assertions that appear at …","Returns a set of all look-around assertions that appear as …","Returns a set of all look-around assertions that appear as …","Returns a set of all look-around assertions that appear as …","Returns a set of all look-around assertions that appear as …","The maximum range of the repetition.","Returns the length, in bytes, of the longest string …","Returns the length, in bytes, of the longest string …","Returns the length, in bytes, of the longest string …","Returns the length (in bytes) of the longest string …","Returns the total amount of heap memory usage, in bytes, …","The minimum range of the repetition.","Returns the length, in bytes, of the smallest string …","Returns the length, in bytes, of the smallest string …","Returns the length, in bytes, of the smallest string …","Returns the length (in bytes) of the smallest string …","The name of the capture, if it exists.","Negate this character class in place.","Negate this character class.","Negate this byte class.","Create a new class from a sequence of ranges.","Create a new Unicode scalar value range for a character …","Create a new class from a sequence of ranges.","Create a new byte range for a character class.","","","","","","The original pattern string in which this error occurred.","This module provides a regular expression printer for Hir.","Returns the properties computed for this Hir.","Add a new range to this set.","Add a new range to this set.","Return the underlying ranges as a slice.","Return the underlying ranges as a slice.","Return a LookSet from the slice given as a native endian …","Return a new set that is equivalent to the original, but …","Creates a repetition HIR expression.","Flip the look-around assertion to its equivalent for …","Updates this set in place with the result of inserting the …","Updates this set in place with the result of intersecting …","Updates this set in place with the result of removing the …","Updates this set in place with the result of subtracting …","Updates this set in place with the result of unioning it …","Create a look-around set containing the look-around …","Return the span at which this error occurred.","This method is called before beginning traversal of the …","This method is called before beginning traversal of the …","Return the start of this range.","Return the start of this range.","Returns the total number of explicit capturing groups that …","The expression inside the capturing group, which may be …","The expression being repeated.","Returns a slice of this kind’s sub-expressions, if any.","Returns a new set that is the result of subtracting the …","Compute the symmetric difference of the given character …","Compute the symmetric difference of the given byte …","If this class consists of only ASCII ranges, then return …","","","","","","","","","","","","","","","","","","","","","","If this class consists of only ASCII ranges, then return …","Defines a translator that converts an Ast to an Hir.","Apply Unicode simple case folding to this character class, …","Expand this character class such that it contains all case …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Union this character class with the given character class, …","Union this byte class with the given byte class, in place.","Returns a new set of properties that corresponds to the …","Returns a new set that is the union of this and the one …","Executes an implementation of Visitor in constant stack …","This method is called between child nodes of an …","This method is called between child nodes of an …","This method is called between child nodes of a …","This method is called between child nodes of a …","This method is called on an Hir after descending all of …","This method is called on an Hir after descending all of …","This method is called on an Hir before descending into …","This method is called on an Hir before descending into …","Returns a new repetition with the same min, max and greedy …","Write a LookSet as a native endian 32-bit integer to the …","The kind of literals to extract from an Hir expression.","Extracts prefix or suffix literal sequences from Hir …","A single literal extracted from an Hir expression.","Extracts only prefix literals from a regex.","A sequence of literals.","Extracts only suffix literals from a regex.","Returns the bytes in this literal.","","","","","","","","","","","","","","","","","","","Modify this sequence to contain the cross product between …","Modify this sequence to contain the cross product between …","Deduplicate adjacent equivalent literals in this sequence.","","","Returns an empty sequence.","","","Returns a new exact literal containing the bytes given.","Extend this literal with the literal given.","Execute the extractor and return a sequence of literals.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Returns a new inexact literal containing the bytes given.","Returns a sequence of literals without a finite size and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Yields ownership of the bytes inside this literal.","Returns true if and only if this sequence is finite and …","Returns true if and only if this literal has zero bytes.","Returns true if and only if all literals in this sequence …","Returns true if and only if this literal is exact.","Returns true if this sequence is finite.","Returns true if and only if all literals in this sequence …","Returns true if this kind is the Prefix variant.","Returns true if this kind is the Suffix variant.","Trims all literals in this seq such that only the first len…","Trims this literal such that only the first len bytes …","Trims all literals in this seq such that only the last len …","Trims this literal such that only the last len bytes …","Set the kind of literal sequence to extract from an Hir …","Returns the number of literals in this sequence if the …","Returns the length of this literal in bytes.","Configure a limit on the length of the sequence that is …","Configure a limit on the maximum length of any literal in …","Configure a limit on the total number of repetitions that …","Configure a limit on the total number of literals that …","If this is a finite sequence, return its members as a …","Returns the longest common prefix from this seq.","Returns the longest common suffix from this seq.","Make all of the literals in this sequence inexact.","Marks this literal as inexact.","Converts this sequence to an infinite sequence.","Return the maximum length of the sequence that would …","Returns the length of the longest literal in this sequence.","Return the maximum length of the sequence that would …","Returns the length of the shortest literal in this …","Shrinks this seq to its minimal size while respecting the …","Create a new extractor with a default configuration.","Returns a sequence of exact literals from the given byte …","Optimizes this seq while treating its literals as prefixes …","Optimizes this seq while treating its literals as suffixes …","","Push a literal to the end of this sequence.","Returns the “rank” of the given byte.","Reverse the bytes in this literal.","Reverses all of the literals in this sequence.","Returns a sequence containing a single literal.","Sorts this sequence of literals lexicographically.","","","","","","","","","","","","","","","","","Unions the other sequence into this one.","Unions the other sequence into this one by splice the other","A printer for a regular expression’s high-level …","","","","Returns the argument unchanged.","Calls U::from(self).","Create a new printer.","Print the given Ast to the given writer. The writer must …","","","","A translator maps abstract syntax to a high level …","A builder for constructing an AST->HIR translator.","","","","","Build a translator using the current configuration.","Enable or disable the case insensitive flag (i) by default.","","","","","Enable or disable the CRLF mode flag (R) by default.","","Enable or disable the “dot matches any character” flag …","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Sets the line terminator for use with (?u-s:.) and (?-us:.)…","Enable or disable the multi-line matching flag (m) by …","Create a new translator builder with a default c …","Create a new translator using the default configuration.","Enable or disable the “swap greed” flag (U) by default.","","","Translate the given abstract syntax tree (AST) into a high …","","","","","","","Enable or disable the Unicode flag (u) by default.","When disabled, translation will permit the construction of …","Four successive byte ranges.","One byte range.","Three successive byte ranges.","Two successive byte ranges.","A single inclusive range of UTF-8 bytes.","Utf8Sequence represents a sequence of byte ranges.","An iterator over ranges of matching UTF-8 byte sequences.","Returns the underlying sequence of byte ranges as a slice.","","","","","","","","","","","","","End of byte range (inclusive).","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns the number of byte ranges in this sequence.","Returns true if and only if a prefix of bytes matches this …","Returns true if and only if the given byte is in this …","Create a new iterator over UTF-8 byte ranges for the …","","","","Reverses the ranges in this sequence.","Start of byte range (inclusive).","","","","","","","","","","",""],"i":[0,4,0,0,4,0,0,4,1,2,10,4,1,2,10,1,1,4,1,2,4,1,2,1,1,1,4,0,0,4,4,1,2,10,10,4,4,4,1,2,10,0,1,4,1,2,10,0,0,0,0,1,1,1,1,2,1,0,2,1,4,1,2,4,10,4,1,2,10,4,1,2,10,0,4,1,2,10,1,0,1,42,42,0,24,42,46,0,24,0,0,55,38,45,42,55,46,60,56,32,0,56,38,60,0,0,0,24,32,0,24,0,32,32,0,0,0,0,0,0,32,0,24,0,0,42,44,0,0,24,32,32,50,40,42,24,60,24,46,51,51,44,64,0,0,32,32,32,32,32,55,0,59,32,32,32,32,32,0,24,0,0,38,42,0,24,0,32,32,32,32,32,32,37,37,0,60,50,45,38,0,24,46,0,42,37,60,43,43,59,32,56,44,51,37,43,54,64,46,0,42,42,46,54,0,24,32,32,32,0,32,0,0,0,38,40,42,0,37,0,32,32,32,51,51,37,60,50,38,46,60,32,39,39,46,32,32,42,37,38,0,0,40,42,51,51,51,51,51,51,51,39,42,54,54,19,24,24,34,52,28,23,36,12,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,27,27,28,24,24,24,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,26,33,33,35,34,24,39,24,24,45,24,26,47,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,64,19,24,28,58,12,12,32,32,26,33,34,35,24,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,42,52,24,57,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,23,36,48,28,26,24,44,31,59,26,47,55,48,19,12,27,30,41,31,29,49,25,53,28,20,49,33,24,57,30,41,31,29,26,33,33,52,0,26,33,12,0,48,24,49,12,24,45,46,35,23,36,27,30,41,31,29,47,48,49,25,52,53,28,57,58,19,20,26,64,64,26,47,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,12,32,24,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,12,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,45,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,26,26,106,106,106,107,108,109,110,110,0,0,65,66,65,66,65,65,66,65,66,65,65,66,65,66,65,65,66,65,65,66,65,66,66,65,66,65,66,65,66,65,66,0,67,67,67,67,67,67,67,67,67,67,76,81,81,81,81,81,81,81,81,72,0,76,0,0,76,0,0,0,0,0,0,76,0,76,70,70,70,85,0,0,0,0,75,75,0,76,0,76,0,0,85,0,0,76,70,70,70,72,75,75,75,75,75,0,70,70,70,70,70,70,70,70,70,70,70,70,16,70,70,83,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,16,72,73,74,16,11,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,84,11,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,84,78,79,16,83,83,83,83,83,83,83,83,83,78,79,83,73,74,16,16,16,73,74,83,78,79,11,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,82,16,85,11,11,75,75,16,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,88,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,70,83,80,71,83,73,74,83,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,86,87,84,16,82,73,74,72,83,82,72,82,73,74,83,11,16,78,79,83,0,16,72,73,74,16,82,82,82,82,82,80,72,73,74,82,82,80,72,73,74,82,71,72,73,74,73,78,74,79,86,87,84,78,79,11,0,16,73,74,73,74,83,83,16,70,83,83,83,83,83,83,11,85,85,78,79,82,71,80,76,83,73,74,73,11,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,84,11,75,16,88,74,0,72,73,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,11,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,73,74,82,83,0,85,85,85,85,85,85,85,85,80,83,0,0,0,97,0,97,95,95,96,97,98,95,96,97,98,95,96,97,98,95,96,97,98,95,95,98,98,98,96,97,98,98,95,95,95,96,96,97,98,95,96,97,98,95,95,95,98,95,98,96,97,98,95,95,98,95,98,95,98,98,97,97,98,95,98,95,96,98,95,96,96,96,96,98,98,98,98,95,98,98,98,98,98,98,96,98,98,98,95,98,0,95,98,98,98,96,97,98,95,96,97,98,95,96,97,98,95,96,97,98,95,98,98,0,100,100,100,100,100,100,100,100,100,100,0,0,101,102,101,102,101,101,101,102,101,102,101,101,101,101,102,101,102,101,102,101,101,101,102,101,101,102,102,101,102,101,102,101,102,101,101,103,103,103,103,0,0,0,103,103,104,105,103,104,105,103,104,103,104,103,104,104,103,104,103,104,105,103,104,105,103,104,105,103,105,103,103,104,105,105,103,104,103,104,103,104,103,104,105,103,104,105,103,104,105],"f":[0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[[1,3],1],[4,4],[1,1],[2,2],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[1,3],1],[[],1],[[1,3],1],[[4,4],3],[6,7],[[6,7],5],[[4,8],9],[[4,8],9],[[1,8],9],[[2,8],9],[[10,8],9],[[10,8],9],[-1,-1,[]],[11,4],[12,4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[[1,3],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[13,3],[13,3],[14,3],[13,3],[[1,14],1],[[1,3],1],[[1,15],1],[[],1],[[],2],[[1,3],1],[6,[[17,[16,4]]]],[[2,6],[[17,[16,4]]]],[[1,3],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,7,[]],[-1,7,[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[13,[[17,[3,10]]]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[[1,3],1],0,[[1,3],1],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[19,20],[[22,[21]]]],[23,24],[25,24],0,0,0,0,0,[12,[[22,[26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[27,[[22,[14]]]],0,[28,[[22,[15]]]],[29,24],[30,24],[31,24],[12,12],[32,32],[26,26],[33,33],[34,34],[35,35],[24,24],[23,23],[36,36],[27,27],[37,37],[38,38],[39,39],[30,30],[40,40],[41,41],[42,42],[31,31],[43,43],[44,44],[29,29],[45,45],[46,46],[47,47],[48,48],[49,49],[50,50],[25,25],[51,51],[52,52],[53,53],[54,54],[55,55],[28,28],[56,56],[57,57],[58,58],[19,19],[20,20],[59,59],[60,60],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[26,26],61],[[33,33],61],0,0,0,[36,24],[39,15],[26,24],[24,5],[45,5],[26,24],0,0,[[12,12],3],[[32,32],3],[[26,26],3],[[33,33],3],[[34,34],3],[[35,35],3],[[24,24],3],[[23,23],3],[[36,36],3],[[27,27],3],[[37,37],3],[[38,38],3],[[39,39],3],[[30,30],3],[[40,40],3],[[41,41],3],[[42,42],3],[[31,31],3],[[43,43],3],[[44,44],3],[[29,29],3],[[45,45],3],[[46,46],3],[[47,47],3],[[48,48],3],[[49,49],3],[[50,50],3],[[25,25],3],[[51,51],3],[[52,52],3],[[53,53],3],[[54,54],3],[[55,55],3],[[28,28],3],[[56,56],3],[[57,57],3],[[58,58],3],[[19,19],3],[[20,20],3],[[59,59],3],[[60,60],3],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[-1,-2]]],[],[]],[[19,60],[[22,[3]]]],[58,24],[28,[[22,[19]]]],0,[[12,8],9],[[12,8],9],[[32,8],9],[[32,8],9],[[26,8],9],[[33,8],9],[[34,8],9],[[35,8],9],[[24,8],9],[[24,8],9],[[23,8],9],[[36,8],9],[[27,8],9],[[37,8],9],[[38,8],9],[[39,8],9],[[30,8],9],[[40,8],9],[[41,8],9],[[42,8],9],[[31,8],9],[[43,8],9],[[44,8],9],[[29,8],9],[[45,8],9],[[46,8],9],[[47,8],9],[[48,8],9],[[49,8],9],[[50,8],9],[[25,8],9],[[51,8],9],[[52,8],9],[[53,8],9],[[54,8],9],[[55,8],9],[[28,8],9],[[56,8],9],[[57,8],9],[[58,8],9],[[19,8],9],[[20,8],9],[[59,8],9],[[60,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[6,[[22,[42]]]],0,[28,24],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[23,24],[36,24],[48,46],[28,3],[26,3],[24,3],[44,3],[31,3],[59,3],[26,3],[47,3],[55,3],0,0,[12,32],0,0,0,0,0,0,0,0,0,0,0,0,[27,24],0,0,0,0,0,[[33,33],26],[[21,21,21],33],0,0,0,[[26,26],[[22,[61]]]],[[33,33],[[22,[61]]]],[12,6],0,[[48,46],5],[52,24],0,[12,26],[24,26],[45,26],[46,26],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[33,26],[[[64,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[48,45],[[24,-1],17,64],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[26,33],26],[[26,33],26],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[65,66],[65,65],[66,66],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],65],[[65,8],9],[[66,8],9],[-1,-1,[]],[-1,-1,[]],[[65,3],65],[-1,-2,[],[]],[-1,-2,[],[]],[[65,15],65],[[],65],[[],66],[[65,3],65],[[66,6],[[17,[24,12]]]],[[66,6],[[17,[34,12]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[67,8],9],[-1,-1,[]],[-1,-2,[],[]],[[],67],[[67,24,-1],9,68],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[69,[16]]],16],[70,13],[70,15],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[71,16],[72,5],[73,5],[74,5],[72,16],[11,11],[75,75],[16,16],[76,76],[77,77],[72,72],[73,73],[78,78],[74,74],[79,79],[70,70],[71,71],[80,80],[81,81],[82,82],[83,83],[84,84],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[78,78],61],[[79,79],61],[[[69,[16]]],16],[[83,70],3],[83,3],[83,3],[83,3],[83,3],[83,3],[83,3],[83,3],[83,3],[[],78],[[],79],[[],83],[[73,73],5],[[74,74],5],[81,16],[16,5],[[],16],[[],73],[[],74],[[],83],[78,13],[79,14],[[11,11],3],[[75,75],3],[[16,16],3],[[76,76],3],[[77,77],3],[[72,72],3],[[73,73],3],[[78,78],3],[[74,74],3],[[79,79],3],[[70,70],3],[[71,71],3],[[80,80],3],[[81,81],3],[[82,82],3],[[83,83],3],[82,21],[[],16],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[-1,-2]]],[],[]],[[11,8],9],[[11,8],9],[[75,8],9],[[75,8],9],[[16,8],9],[[16,8],9],[[76,8],9],[[77,8],9],[[72,8],9],[[73,8],9],[[86,8],9],[[78,8],9],[[74,8],9],[[87,8],9],[[79,8],9],[[70,8],9],[[71,8],9],[[80,8],9],[[81,8],9],[[82,8],9],[[83,8],9],[[84,8],9],[[88,8],9],[[88,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[15,[[22,[70]]]],[[],83],0,0,[[83,70],83],[[73,73],5],[[74,74],5],[[83,83],83],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[16,76],[82,3],[73,3],[74,3],[72,3],[83,3],[82,3],[72,3],[82,3],[73,86],[74,87],[83,84],[11,75],[16,76],[78,21],[79,21],[83,21],0,[-1,16,[[91,[[90,[[89,[14]]]]]]]],[72,[[22,[[69,[14]]]]]],[73,[[22,[[69,[14]]]]]],[74,[[22,[[69,[14]]]]]],[70,16],[82,83],[82,83],[82,83],[82,83],[82,83],0,[72,[[22,[21]]]],[73,[[22,[21]]]],[74,[[22,[21]]]],[82,[[22,[21]]]],[82,21],0,[72,[[22,[21]]]],[73,[[22,[21]]]],[74,[[22,[21]]]],[82,[[22,[21]]]],0,[72,5],[73,5],[74,5],[-1,73,[[93,[],[[92,[78]]]]]],[[13,13],78],[-1,74,[[93,[],[[92,[79]]]]]],[[14,14],79],[86,[[22,[78]]]],[87,[[22,[79]]]],[84,[[22,[70]]]],[[78,78],[[22,[61]]]],[[79,79],[[22,[61]]]],[11,6],0,[16,82],[[73,78],5],[[74,79],5],[73,[[89,[78]]]],[74,[[89,[79]]]],[[[89,[14]]],83],[[83,70],83],[80,16],[70,70],[[83,70],5],[[83,83],5],[[83,70],5],[[83,83],5],[[83,83],5],[70,83],[11,26],[[[85,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],[78,13],[79,14],[82,[[22,[21]]]],0,0,[76,[[89,[16]]]],[[83,83],83],[[73,73],5],[[74,74],5],[73,[[22,[74]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[74,[[22,[73]]]],0,[72,[[17,[5,88]]]],[73,[[17,[5,88]]]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[[73,73],5],[[74,74],5],[-2,82,[[94,[82]]],[[93,[],[[92,[-1]]]]]],[[83,83],83],[[16,-1],17,85],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[80,16],80],[[83,[89,[14]]],5],0,0,0,0,0,0,[95,[[89,[14]]]],[95,[[89,[14]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[96,96],[97,97],[98,98],[95,95],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[95,95],61],[[98,98],5],[[98,98],5],[98,5],[[],96],[[],97],[[],98],[[98,98],3],[[95,95],3],[-1,95,[[91,[[69,[14]]]]]],[[95,95],5],[[96,16],98],[[96,8],9],[[97,8],9],[[98,8],9],[[95,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[13,95],[14,95],[-1,98,[[93,[],[[92,[95]]]]]],[-1,95,[[91,[[69,[14]]]]]],[[],98],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[95,[[69,[14]]]],[98,3],[95,3],[98,3],[95,3],[98,3],[98,3],[97,3],[97,3],[[98,21],5],[[95,21],5],[[98,21],5],[[95,21],5],[[96,97],96],[98,[[22,[21]]]],[95,21],[[96,21],96],[[96,21],96],[[96,21],96],[[96,21],96],[98,[[22,[[89,[95]]]]]],[98,[[22,[[89,[14]]]]]],[98,[[22,[[89,[14]]]]]],[98,5],[95,5],[98,5],[[98,98],[[22,[21]]]],[98,[[22,[21]]]],[[98,98],[[22,[21]]]],[98,[[22,[21]]]],[98,5],[[],96],[-2,98,[[99,[[89,[14]]]]],[[93,[],[[92,[-1]]]]]],[98,5],[98,5],[[95,95],[[22,[61]]]],[[98,95],5],[14,14],[95,5],[98,5],[95,98],[98,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[[98,98],5],[[98,98],5],0,[-1,-2,[],[]],[-1,-2,[],[]],[[100,8],9],[-1,-1,[]],[-1,-2,[],[]],[[],100],[[100,16,-1],9,68],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[101,102],[[101,3],101],[101,101],[102,102],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[101,3],101],[[],101],[[101,3],101],[[101,8],9],[[102,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[101,14],101],[[101,3],101],[[],101],[[],102],[[101,3],101],[-1,-2,[],[]],[-1,-2,[],[]],[[102,6,24],[[17,[16,11]]]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[[101,3],101],[[101,3],101],0,0,0,0,0,0,0,[103,[[89,[104]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[103,103],[104,104],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[103,103],61],[[104,104],61],0,[[103,103],3],[[104,104],3],[[103,8],9],[[104,8],9],[[105,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[103,-1,[]],[-1,-2,[],[]],[103,21],[[103,[89,[14]]],3],[[104,14],3],[[13,13],105],[105,[[22,[-1]]],[]],[[103,103],[[22,[61]]]],[[104,104],[[22,[61]]]],[103,5],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]]],"c":[],"p":[[5,"ParserBuilder",0],[5,"Parser",0],[1,"bool"],[6,"Error",0],[1,"tuple"],[1,"str"],[5,"String",1602],[5,"Formatter",1603],[8,"Result",1603],[5,"UnicodeWordError",0],[5,"Error",937],[5,"Error",81],[1,"char"],[1,"u8"],[1,"u32"],[5,"Hir",937],[6,"Result",1604],[5,"TypeId",1605],[5,"Flags",81],[5,"FlagsItem",81],[1,"usize"],[6,"Option",1606],[5,"Alternation",81],[6,"Ast",81],[5,"Assertion",81],[5,"Span",81],[5,"Literal",81],[5,"Group",81],[5,"ClassBracketed",81],[5,"ClassPerl",81],[5,"ClassUnicode",81],[6,"ErrorKind",81],[5,"Position",81],[5,"WithComments",81],[5,"Comment",81],[5,"Concat",81],[6,"LiteralKind",81],[6,"SpecialLiteralKind",81],[6,"HexLiteralKind",81],[6,"ClassPerlKind",81],[5,"ClassAscii",81],[6,"ClassAsciiKind",81],[6,"ClassUnicodeKind",81],[6,"ClassUnicodeOpKind",81],[6,"ClassSet",81],[6,"ClassSetItem",81],[5,"ClassSetRange",81],[5,"ClassSetUnion",81],[5,"ClassSetBinaryOp",81],[6,"ClassSetBinaryOpKind",81],[6,"AssertionKind",81],[5,"Repetition",81],[5,"RepetitionOp",81],[6,"RepetitionKind",81],[6,"RepetitionRange",81],[6,"GroupKind",81],[5,"CaptureName",81],[5,"SetFlags",81],[6,"FlagsItemKind",81],[6,"Flag",81],[6,"Ordering",1607],[17,"Output"],[17,"Err"],[10,"Visitor",81],[5,"ParserBuilder",893],[5,"Parser",893],[5,"Printer",926],[10,"Write",1603],[5,"Vec",1608],[6,"Look",937],[5,"Capture",937],[6,"Class",937],[5,"ClassUnicode",937],[5,"ClassBytes",937],[6,"ErrorKind",937],[6,"HirKind",937],[5,"Literal",937],[5,"ClassUnicodeRange",937],[5,"ClassBytesRange",937],[5,"Repetition",937],[6,"Dot",937],[5,"Properties",937],[5,"LookSet",937],[5,"LookSetIter",937],[10,"Visitor",937],[5,"ClassUnicodeIter",937],[5,"ClassBytesIter",937],[5,"CaseFoldError",937],[1,"slice"],[5,"Box",1609],[10,"Into",1610],[17,"Item"],[10,"IntoIterator",1611],[10,"Borrow",1612],[5,"Literal",1387],[5,"Extractor",1387],[6,"ExtractKind",1387],[5,"Seq",1387],[10,"AsRef",1610],[5,"Printer",1500],[5,"TranslatorBuilder",1511],[5,"Translator",1511],[6,"Utf8Sequence",1548],[5,"Utf8Range",1548],[5,"Utf8Sequences",1548],[15,"NamedValue",885],[15,"FlagDuplicate",888],[15,"FlagRepeatedNegation",888],[15,"GroupNameDuplicate",888],[15,"CaptureName",891]],"b":[[29,"impl-Debug-for-Error"],[30,"impl-Display-for-Error"],[33,"impl-Debug-for-UnicodeWordError"],[34,"impl-Display-for-UnicodeWordError"],[36,"impl-From%3CError%3E-for-Error"],[37,"impl-From%3CError%3E-for-Error"],[493,"impl-Debug-for-Error"],[494,"impl-Display-for-Error"],[495,"impl-Display-for-ErrorKind"],[496,"impl-Debug-for-ErrorKind"],[501,"impl-Display-for-Ast"],[502,"impl-Debug-for-Ast"],[1130,"impl-Debug-for-Error"],[1131,"impl-Display-for-Error"],[1132,"impl-Debug-for-ErrorKind"],[1133,"impl-Display-for-ErrorKind"],[1134,"impl-Display-for-Hir"],[1135,"impl-Debug-for-Hir"],[1152,"impl-Debug-for-CaseFoldError"],[1153,"impl-Display-for-CaseFoldError"],[1431,"impl-From%3Cchar%3E-for-Literal"],[1432,"impl-From%3Cu8%3E-for-Literal"]]}],\ +["regex_syntax",{"doc":"This crate provides a robust regular expression parser.","t":"GPFFPFCNNNNNNNNNNNNNNNNNNNNHHNNNNNNNNNNNNCNNNNNHHHHNNNNNNHNNNNNNNNNNNNNNNHNNNNNCNPPFPPPFPGGPPPPPPPPPFPPPFGFPPFPGPPGFGGFFPFPGGPPFFPPPPPPPPPPPPPRFGPPPPPPGPPPPPPFPFGPPFPGPPPPPPPPGPPPPFPPGPPPPPPPPPPPPPRPFPPPPFPPPPGPFGFPPPFPGPPPPPPPPPPPPPPPPPPPPKFPPPPPPPPPPPPPNNNOOOOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOONNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONOOOOOOOOOOOONOOOOONNOOCNNNCNNONNNNOOOOOOOOOOOOOOOOOOONNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNOOOOOOOOFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNPPPPPPPPPPFPFGPFFFFFFPGPPPPRFGFGPPFPGPFFRFFPPPPPPPPPPKPPPPPPPPPPPPNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNONNNNNONNNNONNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNOONNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNGFFPFPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNHNNNNNNNNNNNNNNNNNNNNNNFNNNNNNNNNNFFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPPFGFNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNN","n":["Error","Parse","Parser","ParserBuilder","Translate","UnicodeWordError","ast","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","build","case_insensitive","clone","clone","clone","clone_into","clone_into","clone_into","crlf","default","dot_matches_new_line","eq","escape","escape_into","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","hir","ignore_whitespace","into","into","into","into","is_escapeable_character","is_meta_character","is_word_byte","is_word_character","line_terminator","multi_line","nest_limit","new","new","octal","parse","parse","swap_greed","to_owned","to_owned","to_owned","to_string","to_string","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_is_word_character","type_id","type_id","type_id","type_id","unicode","utf8","utf8","Alnum","Alpha","Alternation","Alternation","Ascii","Ascii","Assertion","Assertion","AssertionKind","Ast","AtLeast","Bell","BinaryOp","Blank","Bounded","Bracketed","CRLF","CaptureIndex","CaptureLimitExceeded","CaptureName","CaptureName","CarriageReturn","CaseInsensitive","ClassAscii","ClassAsciiKind","ClassBracketed","ClassBracketed","ClassEscapeInvalid","ClassPerl","ClassPerl","ClassPerlKind","ClassRangeInvalid","ClassRangeLiteral","ClassSet","ClassSetBinaryOp","ClassSetBinaryOpKind","ClassSetItem","ClassSetRange","ClassSetUnion","ClassUnclosed","ClassUnicode","ClassUnicode","ClassUnicodeKind","ClassUnicodeOpKind","Cntrl","Colon","Comment","Concat","Concat","DecimalEmpty","DecimalInvalid","Difference","Digit","Digit","Dot","DotMatchesNewLine","Empty","Empty","EndLine","EndText","Equal","Err","Error","ErrorKind","EscapeHexEmpty","EscapeHexInvalid","EscapeHexInvalidDigit","EscapeUnexpectedEof","EscapeUnrecognized","Exactly","Flag","Flag","FlagDanglingNegation","FlagDuplicate","FlagRepeatedNegation","FlagUnexpectedEof","FlagUnrecognized","Flags","Flags","FlagsItem","FlagsItemKind","FormFeed","Graph","Group","Group","GroupKind","GroupNameDuplicate","GroupNameEmpty","GroupNameInvalid","GroupNameUnexpectedEof","GroupUnclosed","GroupUnopened","HexBrace","HexFixed","HexLiteralKind","IgnoreWhitespace","Intersection","Item","LineFeed","Literal","Literal","Literal","LiteralKind","Lower","Meta","MultiLine","Named","NamedValue","Negation","NestLimitExceeded","NonCapturing","NotEqual","NotWordBoundary","Octal","OneLetter","OneOrMore","Output","Perl","Position","Print","Punct","Range","Range","Repetition","Repetition","RepetitionCountDecimalEmpty","RepetitionCountInvalid","RepetitionCountUnclosed","RepetitionKind","RepetitionMissing","RepetitionOp","RepetitionRange","SetFlags","Space","Space","Space","Span","Special","SpecialLiteralKind","SpecialWordBoundaryUnclosed","SpecialWordBoundaryUnrecognized","SpecialWordOrRepetitionUnexpectedEof","StartLine","StartText","Superfluous","SwapGreed","SymmetricDifference","Tab","Unicode","Unicode","UnicodeClassInvalid","UnicodeLong","UnicodeShort","Union","UnsupportedBackreference","UnsupportedLookAround","Upper","Verbatim","VerticalTab","Visitor","WithComments","Word","Word","WordBoundary","WordBoundaryEnd","WordBoundaryEndAngle","WordBoundaryEndHalf","WordBoundaryStart","WordBoundaryStartAngle","WordBoundaryStartHalf","X","Xdigit","ZeroOrMore","ZeroOrOne","add_item","alternation","assertion","ast","ast","ast","asts","asts","auxiliary_span","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","byte","c","capture_index","class_bracketed","class_perl","class_unicode","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","column","comment","comments","concat","digits","dot","drop","drop","empty","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","finish","flag_state","flags","flags","flags","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_name","greedy","group","index","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_ast","into_ast","into_item","is_capturing","is_empty","is_empty","is_equal","is_negated","is_negation","is_one_line","is_valid","is_valid","items","items","kind","kind","kind","kind","kind","kind","kind","kind","kind","kind","kind","lhs","line","literal","name","negated","negated","negated","negated","new","new","offset","op","parse","partial_cmp","partial_cmp","pattern","print","push","repetition","rhs","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","span","splat","start","start","start","start","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","visit","visit_alternation_in","visit_alternation_in","visit_class_set_binary_op_in","visit_class_set_binary_op_in","visit_class_set_binary_op_post","visit_class_set_binary_op_post","visit_class_set_binary_op_pre","visit_class_set_binary_op_pre","visit_class_set_item_post","visit_class_set_item_post","visit_class_set_item_pre","visit_class_set_item_pre","visit_concat_in","visit_concat_in","visit_post","visit_post","visit_pre","visit_pre","with_end","with_start","name","op","value","original","original","original","name","starts_with_p","Parser","ParserBuilder","borrow","borrow","borrow_mut","borrow_mut","build","clone","clone","clone_into","clone_into","default","fmt","fmt","from","from","ignore_whitespace","into","into","nest_limit","new","new","octal","parse","parse_with_comments","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","Printer","borrow","borrow_mut","fmt","from","into","new","print","try_from","try_into","type_id","Alternation","AnyByte","AnyByteExcept","AnyByteExceptCRLF","AnyByteExceptLF","AnyChar","AnyCharExcept","AnyCharExceptCRLF","AnyCharExceptLF","Bytes","Capture","Capture","CaseFoldError","Class","Class","ClassBytes","ClassBytesIter","ClassBytesRange","ClassUnicode","ClassUnicodeIter","ClassUnicodeRange","Concat","Dot","Empty","End","EndCRLF","EndLF","Err","Error","ErrorKind","Hir","HirKind","InvalidLineTerminator","InvalidUtf8","Literal","Literal","Look","Look","LookSet","LookSetIter","Output","Properties","Repetition","Repetition","Start","StartCRLF","StartLF","Unicode","UnicodeCaseUnavailable","UnicodeNotAllowed","UnicodePerlClassNotFound","UnicodePropertyNotFound","UnicodePropertyValueNotFound","Visitor","WordAscii","WordAsciiNegate","WordEndAscii","WordEndHalfAscii","WordEndHalfUnicode","WordEndUnicode","WordStartAscii","WordStartHalfAscii","WordStartHalfUnicode","WordStartUnicode","WordUnicode","WordUnicodeNegate","alternation","as_char","as_repr","bits","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capture","case_fold_simple","case_fold_simple","case_fold_simple","class","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","cmp","concat","contains","contains_anchor","contains_anchor_crlf","contains_anchor_haystack","contains_anchor_lf","contains_anchor_line","contains_word","contains_word_ascii","contains_word_unicode","default","default","default","difference","difference","dot","drop","empty","empty","empty","empty","end","end","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","eq","explicit_captures_len","fail","finish","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from","from_repr","full","greedy","index","insert","intersect","intersect","intersect","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into","into_iter","into_iter","into_iter","into_kind","is_alternation_literal","is_ascii","is_ascii","is_empty","is_empty","is_literal","is_utf8","is_utf8","iter","iter","iter","kind","kind","len","len","len","literal","literal","literal","literal","literal","look","look_set","look_set_prefix","look_set_prefix_any","look_set_suffix","look_set_suffix_any","max","maximum_len","maximum_len","maximum_len","maximum_len","memory_usage","min","minimum_len","minimum_len","minimum_len","minimum_len","name","negate","negate","negate","new","new","new","new","next","next","next","partial_cmp","partial_cmp","pattern","print","properties","push","push","ranges","ranges","read_repr","remove","repetition","reversed","set_insert","set_intersect","set_remove","set_subtract","set_union","singleton","span","start","start","start","start","static_explicit_captures_len","sub","sub","subs","subtract","symmetric_difference","symmetric_difference","to_byte_class","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","to_unicode_class","translate","try_case_fold_simple","try_case_fold_simple","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","union","union","union","union","visit","visit_alternation_in","visit_alternation_in","visit_concat_in","visit_concat_in","visit_post","visit_post","visit_pre","visit_pre","with","write_repr","ExtractKind","Extractor","Literal","Prefix","Seq","Suffix","as_bytes","as_ref","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","cmp","cross_forward","cross_reverse","dedup","default","default","empty","eq","eq","exact","extend","extract","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from_iter","inexact","infinite","into","into","into","into","into_bytes","is_empty","is_empty","is_exact","is_exact","is_finite","is_inexact","is_prefix","is_suffix","keep_first_bytes","keep_first_bytes","keep_last_bytes","keep_last_bytes","kind","len","len","limit_class","limit_literal_len","limit_repeat","limit_total","literals","longest_common_prefix","longest_common_suffix","make_inexact","make_inexact","make_infinite","max_cross_len","max_literal_len","max_union_len","min_literal_len","minimize_by_preference","new","new","optimize_for_prefix_by_preference","optimize_for_suffix_by_preference","partial_cmp","push","rank","reverse","reverse_literals","singleton","sort","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","union","union_into_empty","Printer","borrow","borrow_mut","fmt","from","into","new","print","try_from","try_into","type_id","Translator","TranslatorBuilder","borrow","borrow","borrow_mut","borrow_mut","build","case_insensitive","clone","clone","clone_into","clone_into","crlf","default","dot_matches_new_line","fmt","fmt","from","from","into","into","line_terminator","multi_line","new","new","swap_greed","to_owned","to_owned","translate","try_from","try_from","try_into","try_into","type_id","type_id","unicode","utf8","Four","One","Three","Two","Utf8Range","Utf8Sequence","Utf8Sequences","as_slice","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","cmp","end","eq","eq","fmt","fmt","fmt","from","from","from","into","into","into","into_iter","into_iter","len","matches","matches","new","next","partial_cmp","partial_cmp","reverse","start","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id"],"q":[[0,"regex_syntax"],[81,"regex_syntax::ast"],[885,"regex_syntax::ast::ClassUnicodeKind"],[888,"regex_syntax::ast::ErrorKind"],[891,"regex_syntax::ast::GroupKind"],[893,"regex_syntax::ast::parse"],[926,"regex_syntax::ast::print"],[937,"regex_syntax::hir"],[1387,"regex_syntax::hir::literal"],[1500,"regex_syntax::hir::print"],[1511,"regex_syntax::hir::translate"],[1548,"regex_syntax::utf8"],[1602,"alloc::string"],[1603,"core::fmt"],[1604,"core::fmt"],[1605,"core::any"],[1606,"core::option"],[1607,"core::cmp"],[1608,"core::fmt"],[1609,"alloc::boxed"],[1610,"core::convert"],[1611,"core::iter::traits::collect"],[1612,"core::borrow"],[1613,"core::convert"]],"d":["This error type encompasses any error that can be returned …","An error that occurred while translating concrete syntax …","A convenience parser for regular expressions.","A builder for a regular expression parser.","An error that occurred while translating abstract syntax …","An error that occurs when the Unicode-aware \\\\w class is …","Defines an abstract syntax for regular expressions.","","","","","","","","","Build a parser from this configuration with the given …","Enable or disable the case insensitive flag by default.","","","","","","","Enable or disable the CRLF mode flag by default.","","Enable or disable the “dot matches any character” flag …","","Escapes all regular expression meta characters in text.","Escapes all meta characters in text and writes the result …","","","","","","","","Returns the argument unchanged.","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Defines a high-level intermediate (HIR) representation for …","Enable verbose mode in the regular expression.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns true if the given character can be escaped in a …","Returns true if the given character has significance in a …","Returns true if and only if the given character is an …","Returns true if and only if the given character is a …","Sets the line terminator for use with (?u-s:.) and (?-us:.)…","Enable or disable the multi-line matching flag by default.","Set the nesting limit for this parser.","Create a new parser builder with a default configuration.","Create a new parser with a default configuration.","Whether to support octal syntax or not.","A convenience routine for parsing a regex using default …","Parse the regular expression into a high level intermediate","Enable or disable the “swap greed” flag by default.","","","","","","","","","","","","","","Returns true if and only if the given character is a …","","","","","Enable or disable the Unicode flag (u) by default.","Converts ranges of Unicode scalar values to equivalent …","When disabled, translation will permit the construction of …","[0-9A-Za-z]","[A-Za-z]","An alternation of regular expressions.","An alternation of regular expressions.","[\\\\x00-\\\\x7F]","An ASCII character class, e.g., [:alnum:] or [:punct:].","A single zero-width assertion.","A single zero-width assertion.","An assertion kind.","An abstract syntax tree for a single regular expression.","{m,}","Bell, spelled \\\\a (\\\\x07).","A single binary operation (i.e., &&, – or ~~).","[ \\\\t]","{m,n}","A bracketed character class set, which may contain zero or …","R","(a)","The capturing group limit was exceeded.","A capture name.","(?<name>a) or (?P<name>a)","Carriage return, spelled \\\\r (\\\\x0D).","i","An ASCII character class.","The available ASCII character classes.","A bracketed character class, e.g., [a-z0-9].","A single bracketed character class set, which may contain …","An invalid escape sequence was found in a character class …","A Perl character class.","A single perl character class, e.g., \\\\d or \\\\W.","The available Perl character classes.","An invalid character class range was found. An invalid …","An invalid range boundary was found in a character class. …","A character class set.","A Unicode character class set operation.","The type of a Unicode character class set operation.","A single component of a character class set.","A single character class range in a set.","A union of items inside a character class set.","An opening [ was found with no corresponding closing ].","A Unicode character class.","A single Unicode character class, e.g., \\\\pL or \\\\p{Greek}.","The available forms of Unicode character classes.","The type of op used in a Unicode character class.","[\\\\x00-\\\\x1F\\\\x7F]","A property set to a specific value using a colon, e.g., …","A comment from a regular expression with an associated …","A concatenation of regular expressions.","A concatenation of regular expressions.","Note that this error variant is no longer used. Namely, a …","An invalid decimal number was given where one was expected.","The difference of two sets, e.g., \\\\pN--[0-9].","Decimal numbers.","[0-9]","The “any character” class.","s","An empty regex that matches everything.","An empty item.","$","\\\\z","A property set to a specific value, e.g., \\\\p{scx=Katakana}.","An error that visiting an AST might return.","An error that occurred while parsing a regular expression …","The type of an error that occurred while building an AST.","A bracketed hex literal was empty.","A bracketed hex literal did not correspond to a Unicode …","An invalid hexadecimal digit was found.","EOF was found before an escape sequence was completed.","An unrecognized escape sequence.","{m}","A single flag.","A single flag in a group.","A dangling negation was used when setting flags, e.g., i-.","A flag was used twice, e.g., i-i.","The negation operator was used twice, e.g., -i-s.","Expected a flag but got EOF, e.g., (?.","Unrecognized flag, e.g., a.","A group of flags.","A set of flags, e.g., (?is).","A single item in a group of flags.","The kind of an item in a group of flags.","Form feed, spelled \\\\f (\\\\x0C).","[!-~]","A grouped regular expression.","A grouped regular expression.","The kind of a group.","A duplicate capture name was found.","A capture group name is empty, e.g., (?P<>abc).","An invalid character was seen for a capture group name. …","A closing > could not be found for a capture group name.","An unclosed group, e.g., (ab.","An unopened group, e.g., ab).","The literal is written as a hex code with a bracketed …","The literal is written as a hex code with a fixed number …","The type of a Unicode hex literal.","x","The intersection of two sets, e.g., \\\\pN&&[a-z].","An item, which can be a single literal, range, nested …","Line feed, spelled \\\\n (\\\\x0A).","A single literal expression.","A single character literal, which includes escape …","A single literal.","The kind of a single literal expression.","[a-z]","The literal is written as an escape because it is …","m","A binary property, general category or script. The string …","A property name and an associated value.","A negation operator applied to all subsequent flags in the …","The nest limit was exceeded. The limit stored here is the …","(?:a) and (?i:a)","A property that isn’t a particular value, e.g., …","\\\\B","The literal is written as an octal escape, e.g., \\\\141.","A one letter abbreviated class, e.g., \\\\pN.","+","The result of visiting an AST.","A perl character class, e.g., \\\\d or \\\\W.","A single position in a regular expression.","[ -~]","[!-/:-@\\\\[-{-~]`","A range between two literals.","{m,n}","A repetition operation applied to a regular expression.","A repetition operator applied to an arbitrary regular …","An opening { was not followed by a valid decimal value. …","The range provided in a counted repetition operator is …","An opening { was found with no corresponding closing }.","The kind of a repetition operator.","A repetition operator was applied to a missing …","The repetition operator itself.","A range repetition operator.","A group of flags that is not applied to a particular …","Space, spelled \\\\ (\\\\x20). Note that this can only appear …","Whitespace.","[\\\\t\\\\n\\\\v\\\\f\\\\r ]","Span represents the position information of a single AST …","The literal is written as a specially recognized escape, …","The type of a special literal.","The special word boundary syntax, \\\\b{something}, was used, …","The special word boundary syntax, \\\\b{something}, was used, …","The syntax \\\\b{ was observed, but afterwards the end of the …","^","\\\\A","The literal is written as an escape despite the fact that …","U","The symmetric difference of two sets. The symmetric …","Tab, spelled \\\\t (\\\\x09).","A Unicode character class, e.g., \\\\pL or \\\\p{Greek}.","u","The Unicode class is not valid. This typically occurs when …","A \\\\U prefix. When used without brackets, this form is …","A \\\\u prefix. When used without brackets, this form is …","A union of items.","When octal support is disabled, this error is produced …","When syntax similar to PCRE’s look-around is used, this …","[A-Z]","The literal is written verbatim, e.g., a or .","Vertical tab, spelled \\\\v (\\\\x0B).","A trait for visiting an abstract syntax tree (AST) in …","An abstract syntax tree for a singular expression along …","Word characters.","[0-9A-Za-z_]","\\\\b","\\\\b{end}","\\\\> (alias for \\\\b{end})","\\\\b{end-half}","\\\\b{start}","\\\\< (alias for \\\\b{start})","\\\\b{start-half}","A \\\\x prefix. When used without brackets, this form is …","[0-9A-Fa-f]","*","?","Add the given item to this sequence of flags.","Create a “alternation” AST item.","Create a “assertion” AST item.","The actual ast.","The regular expression under repetition.","The regular expression in this group.","The alternate regular expressions.","The concatenation regular expressions.","Return an auxiliary span. This span exists only for some …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","If this literal was written as a \\\\x hex escape, then this …","The Unicode scalar value corresponding to this literal.","Returns the capture index of this group, if this is a …","Create a “bracketed class” AST item.","Create a “Perl class” AST item.","Create a “Unicode class” AST item.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The approximate column number, starting at 1.","The comment text, starting with the first character …","All comments found in the original regular expression.","Create a “concat” AST item.","The number of digits that must be used with this literal …","Create a “dot” AST item.","","","Create an “empty” AST item.","The end byte offset.","The end of this range.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","All implementors of Visitor must provide a finish method, …","Returns the state of the given flag in this set.","Create a “flags” AST item.","If this group is non-capturing, then this returns the …","The actual sequence of flags.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return the corresponding ClassAsciiKind variant for the …","Whether this operation was applied greedily or not.","Create a “group” AST item.","The capture index.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return this alternation as an AST.","Return this concatenation as an AST.","Return this union as a character class set item.","Returns true if and only if this group is capturing.","Returns true if and only if this span is empty. That is, …","Return true if and only if this Ast is empty.","Whether the op is an equality op or not.","Returns true if this class has been negated.","Returns true if and only if this item is a negation …","Returns true if and only if this span occurs on a single …","Returns true if and only if this character class range is …","Returns true if and only if this repetition range is valid.","The sequence of items that make up this union.","A sequence of flag items. Each item is either a flag or a …","Return the type of this error.","The kind of this literal.","The kind of Perl class.","The kind of ASCII class.","The kind of Unicode class.","The type of this set. A set is either a normal union of …","The type of this set operation.","The assertion kind, e.g., \\\\b or ^.","The type of operation.","The kind of this group.","The kind of this item.","The left hand side of the operation.","The line number, starting at 1.","Create a “literal” AST item.","The capture name.","Whether the class is negated or not. e.g., \\\\d is not …","Whether the class is negated or not. e.g., [[:alpha:]] is …","Whether this class is negated or not.","Whether this class is negated or not. e.g., [a] is not …","Create a new span with the given positions.","Create a new position with the given information.","The absolute offset of this position, starting at 0 from …","The actual operation.","This module provides a regular expression parser.","","","The original pattern string in which this error occurred.","This module provides a regular expression printer for Ast.","Push a new item in this union.","Create a “repetition” AST item.","The right hand side of the operation.","Return the span at which this error occurred.","Return the span of this abstract syntax tree.","Return the span of this character class set.","Return the span of this character class set item.","The span of this comment, including the beginning # and …","The span of this alternation.","The span of this concatenation.","The span of this literal.","The span of this class.","The span of this class.","The span of this class.","The span of this class.","The span of this range.","The span of the items in this operation. e.g., the a-z0-9 …","The span of this operation. e.g., the a-z--[h-p] in …","The span of this assertion.","The span of this operation.","The span of this operator. This includes things like +, *? …","The span of this group.","The span of this capture name.","The span of these flags, including the grouping …","The span of this group of flags.","The span of this item.","Create a new span using the given position as the start …","This method is called before beginning traversal of the …","This method is called before beginning traversal of the …","The start byte offset.","The start of this range.","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Build a set from a union.","Executes an implementation of Visitor in constant stack …","This method is called between child nodes of an Alternation…","This method is called between child nodes of an Alternation…","This method is called between the left hand and right hand …","This method is called between the left hand and right hand …","This method is called on every ClassSetBinaryOp after …","This method is called on every ClassSetBinaryOp after …","This method is called on every ClassSetBinaryOp before …","This method is called on every ClassSetBinaryOp before …","This method is called on every ClassSetItem after …","This method is called on every ClassSetItem after …","This method is called on every ClassSetItem before …","This method is called on every ClassSetItem before …","This method is called between child nodes of a …","This method is called between child nodes of a …","This method is called on an Ast after descending all of …","This method is called on an Ast after descending all of …","This method is called on an Ast before descending into …","This method is called on an Ast before descending into …","Create a new span by replacing the ending the position …","Create a new span by replacing the starting the position …","The property name (which may be empty).","The type of Unicode op used to associate name with value.","The property value (which may be empty).","The position of the original flag. The error position …","The position of the original negation operator. The error …","The position of the initial occurrence of the capture …","The capture name.","True if the ?P< syntax is used and false if the ?< syntax …","A regular expression parser.","A builder for a regular expression parser.","","","","","Build a parser from this configuration with the given …","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Enable verbose mode in the regular expression.","Calls U::from(self).","Calls U::from(self).","Set the nesting limit for this parser.","Create a new parser builder with a default configuration.","Create a new parser with a default configuration.","Whether to support octal syntax or not.","Parse the regular expression into an abstract syntax tree.","Parse the regular expression and return an abstract syntax …","","","","","","","","","A printer for a regular expression abstract syntax tree.","","","","Returns the argument unchanged.","Calls U::from(self).","Create a new printer.","Print the given Ast to the given writer. The writer must …","","","","An alternation of expressions.","Matches any byte value.","Matches any byte value except for the u8 given.","Matches any byte value except for \\\\r and \\\\n.","Matches any byte value except for \\\\n.","Matches the UTF-8 encoding of any Unicode scalar value.","Matches the UTF-8 encoding of any Unicode scalar value …","Matches the UTF-8 encoding of any Unicode scalar value …","Matches the UTF-8 encoding of any Unicode scalar value …","A set of characters represented by arbitrary bytes (one …","The high-level intermediate representation for a capturing …","A capturing group, which contains a sub-expression.","An error that occurs when Unicode-aware simple case …","The high-level intermediate representation of a character …","A single character class that matches any of the …","A set of characters represented by arbitrary bytes.","An iterator over all ranges in a byte character class.","A single range of characters represented by arbitrary …","A set of characters represented by Unicode scalar values.","An iterator over all ranges in a Unicode character class.","A single range of characters represented by Unicode scalar …","A concatenation of expressions.","A type describing the different flavors of ..","The empty regular expression, which matches everything, …","Match the end of text. Specifically, this matches at the …","Match the end of a line or the end of text. Specifically, …","Match the end of a line or the end of text. Specifically, …","An error that visiting an HIR might return.","An error that can occur while translating an Ast to a Hir.","The type of an error that occurred while building an Hir.","A high-level intermediate representation (HIR) for a …","The underlying kind of an arbitrary Hir expression.","This error occurs when one uses a non-ASCII byte for a …","This error occurs when translating a pattern that could …","The high-level intermediate representation of a literal.","A literalstring that matches exactly these bytes.","The high-level intermediate representation for a …","A look-around assertion. A look-around match always has …","A set of look-around assertions.","An iterator over all look-around assertions in a LookSet.","The result of visiting an HIR.","A type that collects various properties of an HIR value.","The high-level intermediate representation of a repetition …","A repetition operation applied to a sub-expression.","Match the beginning of text. Specifically, this matches at …","Match the beginning of a line or the beginning of text. …","Match the beginning of a line or the beginning of text. …","A set of characters represented by Unicode scalar values.","This occurs when the Unicode simple case mapping tables …","This error occurs when a Unicode feature is used when …","This occurs when a Unicode-aware Perl character class (\\\\w, …","This occurs when an unrecognized Unicode property name …","This occurs when an unrecognized Unicode property value …","A trait for visiting the high-level IR (HIR) in depth …","Match an ASCII-only word boundary. That is, this matches a …","Match an ASCII-only negation of a word boundary.","Match the end of an ASCII-only word boundary. That is, …","Match the end half of an ASCII-only word boundary. That …","Match the end half of a Unicode word boundary. That is, …","Match the end of a Unicode word boundary. That is, this …","Match the start of an ASCII-only word boundary. That is, …","Match the start half of an ASCII-only word boundary. That …","Match the start half of a Unicode word boundary. That is, …","Match the start of a Unicode word boundary. That is, this …","Match a Unicode-aware word boundary. That is, this matches …","Match a Unicode-aware negation of a word boundary.","Returns the alternation of the given expressions.","Returns a convenient single codepoint representation of …","Return the underlying representation of this look-around …","The underlying representation this set is exposed to make …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Creates a capture HIR expression.","Apply Unicode simple case folding to this character class, …","Expand this character class such that it contains all case …","Expand this character class such that it contains all case …","Creates a class HIR expression. The class may either be …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the concatenation of the given expressions.","Returns true if and only if the given look-around …","Returns true if and only if this set contains any anchor …","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any “…","Returns true if and only if this set contains any word …","Returns true if and only if this set contains any ASCII …","Returns true if and only if this set contains any Unicode …","","","","Subtract the given character class from this character …","Subtract the given byte class from this byte class, in …","Returns an HIR expression for ..","","Returns an empty HIR expression.","Create a new class with no ranges.","Create a new class with no ranges.","Create an empty set of look-around assertions.","Return the end of this range.","Return the end of this range.","","","","","","","","","","","","","","","","","Returns the total number of explicit capturing groups in …","Returns an HIR expression that can never match anything. …","All implementors of Visitor must provide a finish method, …","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Given the underlying representation of a Look value, …","Create a full set of look-around assertions.","Whether this repetition operator is greedy or not. A …","The capture index of the capture.","Return a new set that is equivalent to the original, but …","Intersect this character class with the given character …","Intersect this byte class with the given byte class, in …","Returns a new set that is the intersection of this and the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","Consumes ownership of this HIR expression and returns its …","Return true if and only if this HIR is either a simple …","Returns true if and only if this character class will …","Returns true if and only if this character class will …","Returns true if and only if this character class is empty. …","Returns true if and only if this set is empty.","Return true if and only if this HIR is a simple literal. …","Returns true if and only if this character class will only …","Return true if and only if the corresponding HIR will …","Return an iterator over all ranges in this class.","Return an iterator over all ranges in this class.","Returns an iterator over all of the look-around assertions …","Return the type of this error.","Returns a reference to the underlying HIR kind.","Returns the number of codepoints in this range.","Returns the number of bytes in this range.","Returns the total number of look-around assertions in this …","Provides literal extraction from Hir expressions.","Creates a literal HIR expression.","If this class consists of exactly one element (whether a …","If this class consists of exactly one codepoint, then …","If this class consists of exactly one byte, then return it …","Creates a look-around assertion HIR expression.","Returns a set of all look-around assertions that appear at …","Returns a set of all look-around assertions that appear as …","Returns a set of all look-around assertions that appear as …","Returns a set of all look-around assertions that appear as …","Returns a set of all look-around assertions that appear as …","The maximum range of the repetition.","Returns the length, in bytes, of the longest string …","Returns the length, in bytes, of the longest string …","Returns the length, in bytes, of the longest string …","Returns the length (in bytes) of the longest string …","Returns the total amount of heap memory usage, in bytes, …","The minimum range of the repetition.","Returns the length, in bytes, of the smallest string …","Returns the length, in bytes, of the smallest string …","Returns the length, in bytes, of the smallest string …","Returns the length (in bytes) of the smallest string …","The name of the capture, if it exists.","Negate this character class in place.","Negate this character class.","Negate this byte class.","Create a new class from a sequence of ranges.","Create a new Unicode scalar value range for a character …","Create a new class from a sequence of ranges.","Create a new byte range for a character class.","","","","","","The original pattern string in which this error occurred.","This module provides a regular expression printer for Hir.","Returns the properties computed for this Hir.","Add a new range to this set.","Add a new range to this set.","Return the underlying ranges as a slice.","Return the underlying ranges as a slice.","Return a LookSet from the slice given as a native endian …","Return a new set that is equivalent to the original, but …","Creates a repetition HIR expression.","Flip the look-around assertion to its equivalent for …","Updates this set in place with the result of inserting the …","Updates this set in place with the result of intersecting …","Updates this set in place with the result of removing the …","Updates this set in place with the result of subtracting …","Updates this set in place with the result of unioning it …","Create a look-around set containing the look-around …","Return the span at which this error occurred.","This method is called before beginning traversal of the …","This method is called before beginning traversal of the …","Return the start of this range.","Return the start of this range.","Returns the total number of explicit capturing groups that …","The expression inside the capturing group, which may be …","The expression being repeated.","Returns a slice of this kind’s sub-expressions, if any.","Returns a new set that is the result of subtracting the …","Compute the symmetric difference of the given character …","Compute the symmetric difference of the given byte …","If this class consists of only ASCII ranges, then return …","","","","","","","","","","","","","","","","","","","","","","If this class consists of only ASCII ranges, then return …","Defines a translator that converts an Ast to an Hir.","Apply Unicode simple case folding to this character class, …","Expand this character class such that it contains all case …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Union this character class with the given character class, …","Union this byte class with the given byte class, in place.","Returns a new set of properties that corresponds to the …","Returns a new set that is the union of this and the one …","Executes an implementation of Visitor in constant stack …","This method is called between child nodes of an …","This method is called between child nodes of an …","This method is called between child nodes of a …","This method is called between child nodes of a …","This method is called on an Hir after descending all of …","This method is called on an Hir after descending all of …","This method is called on an Hir before descending into …","This method is called on an Hir before descending into …","Returns a new repetition with the same min, max and greedy …","Write a LookSet as a native endian 32-bit integer to the …","The kind of literals to extract from an Hir expression.","Extracts prefix or suffix literal sequences from Hir …","A single literal extracted from an Hir expression.","Extracts only prefix literals from a regex.","A sequence of literals.","Extracts only suffix literals from a regex.","Returns the bytes in this literal.","","","","","","","","","","","","","","","","","","","Modify this sequence to contain the cross product between …","Modify this sequence to contain the cross product between …","Deduplicate adjacent equivalent literals in this sequence.","","","Returns an empty sequence.","","","Returns a new exact literal containing the bytes given.","Extend this literal with the literal given.","Execute the extractor and return a sequence of literals.","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","","Returns a new inexact literal containing the bytes given.","Returns a sequence of literals without a finite size and …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Yields ownership of the bytes inside this literal.","Returns true if and only if this sequence is finite and …","Returns true if and only if this literal has zero bytes.","Returns true if and only if all literals in this sequence …","Returns true if and only if this literal is exact.","Returns true if this sequence is finite.","Returns true if and only if all literals in this sequence …","Returns true if this kind is the Prefix variant.","Returns true if this kind is the Suffix variant.","Trims all literals in this seq such that only the first len…","Trims this literal such that only the first len bytes …","Trims all literals in this seq such that only the last len …","Trims this literal such that only the last len bytes …","Set the kind of literal sequence to extract from an Hir …","Returns the number of literals in this sequence if the …","Returns the length of this literal in bytes.","Configure a limit on the length of the sequence that is …","Configure a limit on the maximum length of any literal in …","Configure a limit on the total number of repetitions that …","Configure a limit on the total number of literals that …","If this is a finite sequence, return its members as a …","Returns the longest common prefix from this seq.","Returns the longest common suffix from this seq.","Make all of the literals in this sequence inexact.","Marks this literal as inexact.","Converts this sequence to an infinite sequence.","Return the maximum length of the sequence that would …","Returns the length of the longest literal in this sequence.","Return the maximum length of the sequence that would …","Returns the length of the shortest literal in this …","Shrinks this seq to its minimal size while respecting the …","Create a new extractor with a default configuration.","Returns a sequence of exact literals from the given byte …","Optimizes this seq while treating its literals as prefixes …","Optimizes this seq while treating its literals as suffixes …","","Push a literal to the end of this sequence.","Returns the “rank” of the given byte.","Reverse the bytes in this literal.","Reverses all of the literals in this sequence.","Returns a sequence containing a single literal.","Sorts this sequence of literals lexicographically.","","","","","","","","","","","","","","","","","Unions the other sequence into this one.","Unions the other sequence into this one by splice the other","A printer for a regular expression’s high-level …","","","","Returns the argument unchanged.","Calls U::from(self).","Create a new printer.","Print the given Ast to the given writer. The writer must …","","","","A translator maps abstract syntax to a high level …","A builder for constructing an AST->HIR translator.","","","","","Build a translator using the current configuration.","Enable or disable the case insensitive flag (i) by default.","","","","","Enable or disable the CRLF mode flag (R) by default.","","Enable or disable the “dot matches any character” flag …","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Sets the line terminator for use with (?u-s:.) and (?-us:.)…","Enable or disable the multi-line matching flag (m) by …","Create a new translator builder with a default c …","Create a new translator using the default configuration.","Enable or disable the “swap greed” flag (U) by default.","","","Translate the given abstract syntax tree (AST) into a high …","","","","","","","Enable or disable the Unicode flag (u) by default.","When disabled, translation will permit the construction of …","Four successive byte ranges.","One byte range.","Three successive byte ranges.","Two successive byte ranges.","A single inclusive range of UTF-8 bytes.","Utf8Sequence represents a sequence of byte ranges.","An iterator over ranges of matching UTF-8 byte sequences.","Returns the underlying sequence of byte ranges as a slice.","","","","","","","","","","","","","End of byte range (inclusive).","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Returns the number of byte ranges in this sequence.","Returns true if and only if a prefix of bytes matches this …","Returns true if and only if the given byte is in this …","Create a new iterator over UTF-8 byte ranges for the …","","","","Reverses the ranges in this sequence.","Start of byte range (inclusive).","","","","","","","","","","",""],"i":[0,4,0,0,4,0,0,4,1,2,10,4,1,2,10,1,1,4,1,2,4,1,2,1,1,1,4,0,0,4,4,1,2,10,10,4,4,4,1,2,10,0,1,4,1,2,10,0,0,0,0,1,1,1,1,2,1,0,2,1,4,1,2,4,10,4,1,2,10,4,1,2,10,0,4,1,2,10,1,0,1,42,42,0,24,42,46,0,24,0,0,55,38,45,42,55,46,60,56,32,0,56,38,60,0,0,0,24,32,0,24,0,32,32,0,0,0,0,0,0,32,0,24,0,0,42,44,0,0,24,32,32,50,40,42,24,60,24,46,51,51,44,64,0,0,32,32,32,32,32,55,0,59,32,32,32,32,32,0,24,0,0,38,42,0,24,0,32,32,32,32,32,32,37,37,0,60,50,45,38,0,24,46,0,42,37,60,43,43,59,32,56,44,51,37,43,54,64,46,0,42,42,46,54,0,24,32,32,32,0,32,0,0,0,38,40,42,0,37,0,32,32,32,51,51,37,60,50,38,46,60,32,39,39,46,32,32,42,37,38,0,0,40,42,51,51,51,51,51,51,51,39,42,54,54,19,24,24,34,52,28,23,36,11,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,27,27,28,24,24,24,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,26,33,33,35,34,24,39,24,24,45,24,26,47,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,64,19,24,28,58,11,11,32,32,26,33,34,35,24,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,42,52,24,57,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,23,36,48,28,26,24,44,31,59,26,47,55,48,19,11,27,30,41,31,29,49,25,53,28,20,49,33,24,57,30,41,31,29,26,33,33,52,0,26,33,11,0,48,24,49,11,24,45,46,35,23,36,27,30,41,31,29,47,48,49,25,52,53,28,57,58,19,20,26,64,64,26,47,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,11,32,24,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,11,32,26,33,34,35,24,23,36,27,37,38,39,30,40,41,42,31,43,44,29,45,46,47,48,49,50,25,51,52,53,54,55,28,56,57,58,19,20,59,60,45,0,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,26,26,106,106,106,107,108,109,110,110,0,0,65,66,65,66,65,65,66,65,66,65,65,66,65,66,65,65,66,65,65,66,65,66,66,65,66,65,66,65,66,65,66,0,67,67,67,67,67,67,67,67,67,67,76,81,81,81,81,81,81,81,81,72,0,76,0,0,76,0,0,0,0,0,0,76,0,76,70,70,70,85,0,0,0,0,75,75,0,76,0,76,0,0,85,0,0,76,70,70,70,72,75,75,75,75,75,0,70,70,70,70,70,70,70,70,70,70,70,70,16,70,70,83,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,16,72,73,74,16,12,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,84,12,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,84,78,79,16,83,83,83,83,83,83,83,83,83,78,79,83,73,74,16,16,16,73,74,83,78,79,12,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,82,16,85,12,12,75,75,16,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,88,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,70,83,80,71,83,73,74,83,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,86,87,84,16,82,73,74,72,83,82,72,82,73,74,83,12,16,78,79,83,0,16,72,73,74,16,82,82,82,82,82,80,72,73,74,82,82,80,72,73,74,82,71,72,73,74,73,78,74,79,86,87,84,78,79,12,0,16,73,74,73,74,83,83,16,70,83,83,83,83,83,83,12,85,85,78,79,82,71,80,76,83,73,74,73,12,75,16,76,77,72,73,78,74,79,70,71,80,81,82,83,84,12,75,16,88,74,0,72,73,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,12,75,16,76,77,72,73,86,78,74,87,79,70,71,80,81,82,83,84,88,73,74,82,83,0,85,85,85,85,85,85,85,85,80,83,0,0,0,97,0,97,95,95,96,97,98,95,96,97,98,95,96,97,98,95,96,97,98,95,95,98,98,98,96,97,98,98,95,95,95,96,96,97,98,95,96,97,98,95,95,95,98,95,98,96,97,98,95,95,98,95,98,95,98,98,97,97,98,95,98,95,96,98,95,96,96,96,96,98,98,98,98,95,98,98,98,98,98,98,96,98,98,98,95,98,0,95,98,98,98,96,97,98,95,96,97,98,95,96,97,98,95,96,97,98,95,98,98,0,100,100,100,100,100,100,100,100,100,100,0,0,101,102,101,102,101,101,101,102,101,102,101,101,101,101,102,101,102,101,102,101,101,101,102,101,101,102,102,101,102,101,102,101,102,101,101,103,103,103,103,0,0,0,103,103,104,105,103,104,105,103,104,103,104,103,104,104,103,104,103,104,105,103,104,105,103,104,105,103,105,103,103,104,105,105,103,104,103,104,103,104,103,104,105,103,104,105,103,104,105],"f":[0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[[1,3],1],[4,4],[1,1],[2,2],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[1,3],1],[[],1],[[1,3],1],[[4,4],3],[6,7],[[6,7],5],[[4,8],9],[[4,8],9],[[1,8],9],[[2,8],9],[[10,8],9],[[10,8],9],[11,4],[-1,-1,[]],[12,4],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],0,[[1,3],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[13,3],[13,3],[14,3],[13,3],[[1,14],1],[[1,3],1],[[1,15],1],[[],1],[[],2],[[1,3],1],[6,[[17,[16,4]]]],[[2,6],[[17,[16,4]]]],[[1,3],1],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,7,[]],[-1,7,[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[13,[[17,[3,10]]]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[[1,3],1],0,[[1,3],1],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[19,20],[[22,[21]]]],[23,24],[25,24],0,0,0,0,0,[11,[[22,[26]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[27,[[22,[14]]]],0,[28,[[22,[15]]]],[29,24],[30,24],[31,24],[11,11],[32,32],[26,26],[33,33],[34,34],[35,35],[24,24],[23,23],[36,36],[27,27],[37,37],[38,38],[39,39],[30,30],[40,40],[41,41],[42,42],[31,31],[43,43],[44,44],[29,29],[45,45],[46,46],[47,47],[48,48],[49,49],[50,50],[25,25],[51,51],[52,52],[53,53],[54,54],[55,55],[28,28],[56,56],[57,57],[58,58],[19,19],[20,20],[59,59],[60,60],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[26,26],61],[[33,33],61],0,0,0,[36,24],[39,15],[26,24],[24,5],[45,5],[26,24],0,0,[[11,11],3],[[32,32],3],[[26,26],3],[[33,33],3],[[34,34],3],[[35,35],3],[[24,24],3],[[23,23],3],[[36,36],3],[[27,27],3],[[37,37],3],[[38,38],3],[[39,39],3],[[30,30],3],[[40,40],3],[[41,41],3],[[42,42],3],[[31,31],3],[[43,43],3],[[44,44],3],[[29,29],3],[[45,45],3],[[46,46],3],[[47,47],3],[[48,48],3],[[49,49],3],[[50,50],3],[[25,25],3],[[51,51],3],[[52,52],3],[[53,53],3],[[54,54],3],[[55,55],3],[[28,28],3],[[56,56],3],[[57,57],3],[[58,58],3],[[19,19],3],[[20,20],3],[[59,59],3],[[60,60],3],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[-1,-2]]],[],[]],[[19,60],[[22,[3]]]],[58,24],[28,[[22,[19]]]],0,[[11,8],9],[[11,8],9],[[32,8],9],[[32,8],9],[[26,8],9],[[33,8],9],[[34,8],9],[[35,8],9],[[24,8],9],[[24,8],9],[[23,8],9],[[36,8],9],[[27,8],9],[[37,8],9],[[38,8],9],[[39,8],9],[[30,8],9],[[40,8],9],[[41,8],9],[[42,8],9],[[31,8],9],[[43,8],9],[[44,8],9],[[29,8],9],[[45,8],9],[[46,8],9],[[47,8],9],[[48,8],9],[[49,8],9],[[50,8],9],[[25,8],9],[[51,8],9],[[52,8],9],[[53,8],9],[[54,8],9],[[55,8],9],[[28,8],9],[[56,8],9],[[57,8],9],[[58,8],9],[[19,8],9],[[20,8],9],[[59,8],9],[[60,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[6,[[22,[42]]]],0,[28,24],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[23,24],[36,24],[48,46],[28,3],[26,3],[24,3],[44,3],[31,3],[59,3],[26,3],[47,3],[55,3],0,0,[11,32],0,0,0,0,0,0,0,0,0,0,0,0,[27,24],0,0,0,0,0,[[33,33],26],[[21,21,21],33],0,0,0,[[26,26],[[22,[61]]]],[[33,33],[[22,[61]]]],[11,6],0,[[48,46],5],[52,24],0,[11,26],[24,26],[45,26],[46,26],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[33,26],[[[64,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[48,45],[[24,-1],17,64],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],49],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],46],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[[64,[],[[62,[-1]],[63,[-2]]]],24],[[17,[5,-2]]],[],[]],[[26,33],26],[[26,33],26],0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[65,66],[65,65],[66,66],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[],65],[[65,8],9],[[66,8],9],[-1,-1,[]],[-1,-1,[]],[[65,3],65],[-1,-2,[],[]],[-1,-2,[],[]],[[65,15],65],[[],65],[[],66],[[65,3],65],[[66,6],[[17,[24,11]]]],[[66,6],[[17,[34,11]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],0,[-1,-2,[],[]],[-1,-2,[],[]],[[67,8],9],[-1,-1,[]],[-1,-2,[],[]],[[],67],[[67,24,-1],9,68],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[[69,[16]]],16],[70,13],[70,15],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[71,16],[72,5],[73,5],[74,5],[72,16],[12,12],[75,75],[16,16],[76,76],[77,77],[72,72],[73,73],[78,78],[74,74],[79,79],[70,70],[71,71],[80,80],[81,81],[82,82],[83,83],[84,84],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[78,78],61],[[79,79],61],[[[69,[16]]],16],[[83,70],3],[83,3],[83,3],[83,3],[83,3],[83,3],[83,3],[83,3],[83,3],[[],78],[[],79],[[],83],[[73,73],5],[[74,74],5],[81,16],[16,5],[[],16],[[],73],[[],74],[[],83],[78,13],[79,14],[[12,12],3],[[75,75],3],[[16,16],3],[[76,76],3],[[77,77],3],[[72,72],3],[[73,73],3],[[78,78],3],[[74,74],3],[[79,79],3],[[70,70],3],[[71,71],3],[[80,80],3],[[81,81],3],[[82,82],3],[[83,83],3],[82,21],[[],16],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[-1,-2]]],[],[]],[[12,8],9],[[12,8],9],[[75,8],9],[[75,8],9],[[16,8],9],[[16,8],9],[[76,8],9],[[77,8],9],[[72,8],9],[[73,8],9],[[86,8],9],[[78,8],9],[[74,8],9],[[87,8],9],[[79,8],9],[[70,8],9],[[71,8],9],[[80,8],9],[[81,8],9],[[82,8],9],[[83,8],9],[[84,8],9],[[88,8],9],[[88,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[15,[[22,[70]]]],[[],83],0,0,[[83,70],83],[[73,73],5],[[74,74],5],[[83,83],83],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[16,76],[82,3],[73,3],[74,3],[72,3],[83,3],[82,3],[72,3],[82,3],[73,86],[74,87],[83,84],[12,75],[16,76],[78,21],[79,21],[83,21],0,[-1,16,[[91,[[90,[[89,[14]]]]]]]],[72,[[22,[[69,[14]]]]]],[73,[[22,[[69,[14]]]]]],[74,[[22,[[69,[14]]]]]],[70,16],[82,83],[82,83],[82,83],[82,83],[82,83],0,[72,[[22,[21]]]],[73,[[22,[21]]]],[74,[[22,[21]]]],[82,[[22,[21]]]],[82,21],0,[72,[[22,[21]]]],[73,[[22,[21]]]],[74,[[22,[21]]]],[82,[[22,[21]]]],0,[72,5],[73,5],[74,5],[-1,73,[[93,[],[[92,[78]]]]]],[[13,13],78],[-1,74,[[93,[],[[92,[79]]]]]],[[14,14],79],[86,[[22,[78]]]],[87,[[22,[79]]]],[84,[[22,[70]]]],[[78,78],[[22,[61]]]],[[79,79],[[22,[61]]]],[12,6],0,[16,82],[[73,78],5],[[74,79],5],[73,[[89,[78]]]],[74,[[89,[79]]]],[[[89,[14]]],83],[[83,70],83],[80,16],[70,70],[[83,70],5],[[83,83],5],[[83,70],5],[[83,83],5],[[83,83],5],[70,83],[12,26],[[[85,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],5,[],[]],[78,13],[79,14],[82,[[22,[21]]]],0,0,[76,[[89,[16]]]],[[83,83],83],[[73,73],5],[[74,74],5],[73,[[22,[74]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[-1,7,[]],[74,[[22,[73]]]],0,[72,[[17,[5,88]]]],[73,[[17,[5,88]]]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[[73,73],5],[[74,74],5],[-2,82,[[94,[82]]],[[93,[],[[92,[-1]]]]]],[[83,83],83],[[16,-1],17,85],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]]],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[[85,[],[[62,[-1]],[63,[-2]]]],16],[[17,[5,-2]]],[],[]],[[80,16],80],[[83,[89,[14]]],5],0,0,0,0,0,0,[95,[[89,[14]]]],[95,[[89,[14]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[96,96],[97,97],[98,98],[95,95],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[95,95],61],[[98,98],5],[[98,98],5],[98,5],[[],96],[[],97],[[],98],[[98,98],3],[[95,95],3],[-1,95,[[91,[[69,[14]]]]]],[[95,95],5],[[96,16],98],[[96,8],9],[[97,8],9],[[98,8],9],[[95,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[14,95],[-1,-1,[]],[13,95],[-1,98,[[93,[],[[92,[95]]]]]],[-1,95,[[91,[[69,[14]]]]]],[[],98],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[95,[[69,[14]]]],[98,3],[95,3],[98,3],[95,3],[98,3],[98,3],[97,3],[97,3],[[98,21],5],[[95,21],5],[[98,21],5],[[95,21],5],[[96,97],96],[98,[[22,[21]]]],[95,21],[[96,21],96],[[96,21],96],[[96,21],96],[[96,21],96],[98,[[22,[[89,[95]]]]]],[98,[[22,[[89,[14]]]]]],[98,[[22,[[89,[14]]]]]],[98,5],[95,5],[98,5],[[98,98],[[22,[21]]]],[98,[[22,[21]]]],[[98,98],[[22,[21]]]],[98,[[22,[21]]]],[98,5],[[],96],[-2,98,[[99,[[89,[14]]]]],[[93,[],[[92,[-1]]]]]],[98,5],[98,5],[[95,95],[[22,[61]]]],[[98,95],5],[14,14],[95,5],[98,5],[95,98],[98,5],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[-1,18,[]],[[98,98],5],[[98,98],5],0,[-1,-2,[],[]],[-1,-2,[],[]],[[100,8],9],[-1,-1,[]],[-1,-2,[],[]],[[],100],[[100,16,-1],9,68],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[101,102],[[101,3],101],[101,101],[102,102],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[101,3],101],[[],101],[[101,3],101],[[101,8],9],[[102,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[[101,14],101],[[101,3],101],[[],101],[[],102],[[101,3],101],[-1,-2,[],[]],[-1,-2,[],[]],[[102,6,24],[[17,[16,12]]]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[[101,3],101],[[101,3],101],0,0,0,0,0,0,0,[103,[[89,[104]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[103,103],[104,104],[[-1,-2],5,[],[]],[[-1,-2],5,[],[]],[[103,103],61],[[104,104],61],0,[[103,103],3],[[104,104],3],[[103,8],9],[[104,8],9],[[105,8],9],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[103,-1,[]],[-1,-2,[],[]],[103,21],[[103,[89,[14]]],3],[[104,14],3],[[13,13],105],[105,[[22,[-1]]],[]],[[103,103],[[22,[61]]]],[[104,104],[[22,[61]]]],[103,5],0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,[[17,[-2]]],[],[]],[-1,18,[]],[-1,18,[]],[-1,18,[]]],"c":[],"p":[[5,"ParserBuilder",0],[5,"Parser",0],[1,"bool"],[6,"Error",0],[1,"tuple"],[1,"str"],[5,"String",1602],[5,"Formatter",1603],[8,"Result",1603],[5,"UnicodeWordError",0],[5,"Error",81],[5,"Error",937],[1,"char"],[1,"u8"],[1,"u32"],[5,"Hir",937],[6,"Result",1604],[5,"TypeId",1605],[5,"Flags",81],[5,"FlagsItem",81],[1,"usize"],[6,"Option",1606],[5,"Alternation",81],[6,"Ast",81],[5,"Assertion",81],[5,"Span",81],[5,"Literal",81],[5,"Group",81],[5,"ClassBracketed",81],[5,"ClassPerl",81],[5,"ClassUnicode",81],[6,"ErrorKind",81],[5,"Position",81],[5,"WithComments",81],[5,"Comment",81],[5,"Concat",81],[6,"LiteralKind",81],[6,"SpecialLiteralKind",81],[6,"HexLiteralKind",81],[6,"ClassPerlKind",81],[5,"ClassAscii",81],[6,"ClassAsciiKind",81],[6,"ClassUnicodeKind",81],[6,"ClassUnicodeOpKind",81],[6,"ClassSet",81],[6,"ClassSetItem",81],[5,"ClassSetRange",81],[5,"ClassSetUnion",81],[5,"ClassSetBinaryOp",81],[6,"ClassSetBinaryOpKind",81],[6,"AssertionKind",81],[5,"Repetition",81],[5,"RepetitionOp",81],[6,"RepetitionKind",81],[6,"RepetitionRange",81],[6,"GroupKind",81],[5,"CaptureName",81],[5,"SetFlags",81],[6,"FlagsItemKind",81],[6,"Flag",81],[6,"Ordering",1607],[17,"Output"],[17,"Err"],[10,"Visitor",81],[5,"ParserBuilder",893],[5,"Parser",893],[5,"Printer",926],[10,"Write",1603],[5,"Vec",1608],[6,"Look",937],[5,"Capture",937],[6,"Class",937],[5,"ClassUnicode",937],[5,"ClassBytes",937],[6,"ErrorKind",937],[6,"HirKind",937],[5,"Literal",937],[5,"ClassUnicodeRange",937],[5,"ClassBytesRange",937],[5,"Repetition",937],[6,"Dot",937],[5,"Properties",937],[5,"LookSet",937],[5,"LookSetIter",937],[10,"Visitor",937],[5,"ClassUnicodeIter",937],[5,"ClassBytesIter",937],[5,"CaseFoldError",937],[1,"slice"],[5,"Box",1609],[10,"Into",1610],[17,"Item"],[10,"IntoIterator",1611],[10,"Borrow",1612],[5,"Literal",1387],[5,"Extractor",1387],[6,"ExtractKind",1387],[5,"Seq",1387],[10,"AsRef",1610],[5,"Printer",1500],[5,"TranslatorBuilder",1511],[5,"Translator",1511],[6,"Utf8Sequence",1548],[5,"Utf8Range",1548],[5,"Utf8Sequences",1548],[15,"NamedValue",885],[15,"FlagDuplicate",888],[15,"FlagRepeatedNegation",888],[15,"GroupNameDuplicate",888],[15,"CaptureName",891]],"b":[[29,"impl-Debug-for-Error"],[30,"impl-Display-for-Error"],[33,"impl-Display-for-UnicodeWordError"],[34,"impl-Debug-for-UnicodeWordError"],[35,"impl-From%3CError%3E-for-Error"],[37,"impl-From%3CError%3E-for-Error"],[493,"impl-Display-for-Error"],[494,"impl-Debug-for-Error"],[495,"impl-Display-for-ErrorKind"],[496,"impl-Debug-for-ErrorKind"],[501,"impl-Display-for-Ast"],[502,"impl-Debug-for-Ast"],[1130,"impl-Display-for-Error"],[1131,"impl-Debug-for-Error"],[1132,"impl-Display-for-ErrorKind"],[1133,"impl-Debug-for-ErrorKind"],[1134,"impl-Display-for-Hir"],[1135,"impl-Debug-for-Hir"],[1152,"impl-Display-for-CaseFoldError"],[1153,"impl-Debug-for-CaseFoldError"],[1430,"impl-From%3Cu8%3E-for-Literal"],[1432,"impl-From%3Cchar%3E-for-Literal"]]}],\ ["rustc_demangle",{"doc":"Demangle Rust compiler symbol names.","t":"FFNNNNNNHNNNNNNNHNNNNNN","n":["Demangle","TryDemangleError","as_str","borrow","borrow","borrow_mut","borrow_mut","clone","demangle","fmt","fmt","fmt","from","from","into","into","try_demangle","try_from","try_from","try_into","try_into","type_id","type_id"],"q":[[0,"rustc_demangle"],[23,"core::fmt"],[24,"core::fmt"],[25,"core::any"]],"d":["Representation of a demangled symbol name.","Error returned from the try_demangle function below when …","Returns the underlying string that’s being demangled.","","","","","","De-mangles a Rust symbol into a more readable version","","","","Returns the argument unchanged.","Returns the argument unchanged.","Calls U::from(self).","Calls U::from(self).","The same as demangle, except return an Err if the string …","","","","","",""],"i":[0,0,1,1,3,1,3,3,0,1,1,3,1,3,1,3,0,1,3,1,3,1,3],"f":[0,0,[1,2],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[3,3],[2,1],[[1,4],5],[[1,4],5],[[3,4],5],[-1,-1,[]],[-1,-1,[]],[-1,-2,[],[]],[-1,-2,[],[]],[2,[[6,[1,3]]]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,[[6,[-2]]],[],[]],[-1,7,[]],[-1,7,[]]],"c":[],"p":[[5,"Demangle",0],[1,"str"],[5,"TryDemangleError",0],[5,"Formatter",23],[8,"Result",23],[6,"Result",24],[5,"TypeId",25]],"b":[[9,"impl-Display-for-Demangle%3C\'a%3E"],[10,"impl-Debug-for-Demangle%3C\'a%3E"]]}],\ ["sharded_slab",{"doc":"A lock-free concurrent slab.","t":"KKFFTTTTTTFFTTFTFFNNNNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNFFFFFTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Clear","Config","DefaultConfig","Entry","INITIAL_PAGE_SIZE","INITIAL_PAGE_SIZE","MAX_PAGES","MAX_PAGES","MAX_THREADS","MAX_THREADS","OwnedEntry","Pool","RESERVED_BITS","RESERVED_BITS","Slab","USED_BITS","UniqueIter","VacantEntry","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","clone","clone_into","contains","default","default","deref","deref","drop","drop","eq","eq","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","get","get_owned","implementation","insert","insert","into","into","into","into","into","into","into","into_iter","key","key","key","new","new_with_config","next","pool","remove","take","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","unique_iter","vacant_entry","OwnedRef","OwnedRefMut","Pool","Ref","RefMut","USED_BITS","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clear","create","create_owned","create_with","deref","deref","deref","deref","deref_mut","deref_mut","downgrade","downgrade","drop","drop","drop","drop","eq","eq","eq","eq","fmt","fmt","fmt","fmt","from","from","from","from","get","get_owned","into","into","into","into","key","key","key","key","new","new_with_config","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id"],"q":[[0,"sharded_slab"],[104,"sharded_slab::pool"],[170,"core::default"],[171,"core::fmt"],[172,"core::fmt"],[173,"alloc::sync"],[174,"core::result"],[175,"core::any"],[176,"core::ops::function"]],"d":["Trait implemented by types which can be cleared in place, …","Configuration parameters which can be overridden to tune …","Default slab configuration values.","A handle that allows access to an occupied entry in a Slab.","The size of the first page in each shard.","The size of the first page in each shard.","The maximum number of pages in each shard in the slab.","The maximum number of pages in each shard in the slab.","The maximum number of threads which can access the slab.","The maximum number of threads which can access the slab.","An owned reference to an occupied entry in a Slab.","A lock-free concurrent object pool.","Sets a number of high-order bits in each index which are …","Sets a number of high-order bits in each index which are …","A sharded slab.","The number of bits in each index which are used by the …","An exclusive fused iterator over the items in a Slab.","A handle to a vacant entry in a Slab.","","","","","","","","","","","","","","","Clear all data in self, retaining the allocated capacithy.","","","Returns true if the slab contains a value for the given …","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return a reference to the value associated with the given …","Return an owned reference to the value at the given index.","Notes on sharded-slab’s implementation and design.","Inserts a value into the slab, returning the integer index …","Insert a value in the entry.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Returns the key used to access the guard.","Returns the key used to access this guard","Return the integer index at which this entry will be …","Returns a new slab with the default configuration …","Returns a new slab with the provided configuration …","","A lock-free concurrent object pool.","Remove the value at the given index in the slab, returning …","Removes the value associated with the given key from the …","","","","","","","","","","","","","","","","","","","","","","","Returns an iterator over all the items in the slab.","Return a handle to a vacant entry allowing for further …","An owned guard that allows shared immutable access to an …","An owned guard that allows exclusive, mutable access to an …","A lock-free concurrent object pool.","A guard that allows access to an object in a pool.","A guard that allows exclusive mutable access to an object …","The number of bits in each index which are used by the …","","","","","","","","","Remove the value using the storage associated with the …","Creates a new object in the pool, returning an RefMut …","Creates a new object in the pool, returning an OwnedRefMut …","Creates a new object in the pool with the provided …","","","","","","","Downgrades the mutable guard to an immutable guard, …","Downgrades the owned mutable guard to an owned immutable …","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Return a borrowed reference to the value associated with …","Return an owned reference to the value associated with the …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Returns the key used to access this guard","Returns the key used to access the guard.","Returns the key used to access this guard","Returns the key used to access this guard","Returns a new Pool with the default configuration …","Returns a new Pool with the provided configuration …","","","","","","","","","","","",""],"i":[0,0,0,0,7,7,7,7,7,7,0,0,7,7,0,4,0,0,8,4,10,11,3,15,16,8,4,10,11,3,15,16,1,3,3,4,8,4,10,11,10,11,10,11,8,4,10,11,3,15,16,8,4,10,11,3,15,16,4,4,0,4,16,8,4,10,11,3,15,16,15,10,11,16,4,4,15,0,4,4,3,8,4,10,11,3,15,16,8,4,10,11,3,15,16,8,4,10,11,3,15,16,4,4,0,0,0,0,0,8,24,21,25,22,24,21,25,22,8,8,8,8,24,21,25,22,21,22,21,22,24,21,25,22,24,21,25,22,24,21,25,22,24,21,25,22,8,8,24,21,25,22,24,21,25,22,8,8,24,21,25,22,24,21,25,22,24,21,25,22],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[1,2],[3,3],[[-1,-2],2,[],[]],[[[4,[-1,-2]],5],6,[],7],[[],[[8,[-1]]],[1,9]],[[],[[4,[-1]]],[]],[[[10,[-1,-2]]],-3,[],7,[]],[[[11,[-1,-2]]],-3,[],7,[]],[[[10,[-1,-2]]],2,[],7],[[[11,[-1,-2]]],2,[],7],[[[10,[-1,-2]],-1],6,[],7],[[[11,[-1,-2]],-1],6,[],7],[[[8,[-1,-2]],12],13,[14,1,9],7],[[[4,[-1,-2]],12],13,14,7],[[[10,[-1,-2]],12],13,14,7],[[[11,[-1,-2]],12],13,14,7],[[3,12],13],[[[15,[-1,-2]],12],13,14,[14,7]],[[[16,[-1,-2]],12],13,14,[14,7]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[4,[-1,-2]],5],[[17,[[10,[-1,-2]]]]],[],7],[[[18,[[4,[-1,-2]]]],5],[[17,[[11,[-1,-2]]]]],[],7],0,[[[4,[-1,-2]],-1],[[17,[5]]],[],7],[[[16,[-1,-2]],-1],2,[],7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[10,[-1,-2]]],5,[],7],[[[11,[-1,-2]]],5,[],7],[[[16,[-1,-2]]],5,[],7],[[],[[4,[-1]]],[]],[[],[[4,[-1,-2]]],[],7],[[[15,[-1,-2]]],[[17,[-3]]],[],7,[]],0,[[[4,[-1,-2]],5],6,[],7],[[[4,[-1,-2]],5],[[17,[-1]]],[],7],[-1,-2,[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[[[4,[-1,-2]]],[[15,[-1,-2]]],[],7],[[[4,[-1,-2]]],[[17,[[16,[-1,-2]]]]],[],7],0,0,0,0,0,0,[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[8,[-1,-2]],5],6,[1,9],7],[[[8,[-1,-2]]],[[17,[[21,[-1,-2]]]]],[1,9],7],[[[18,[[8,[-1,-2]]]]],[[17,[[22,[-1,-2]]]]],[1,9],7],[[[8,[-1,-2]],-3],[[17,[5]]],[1,9],7,[[23,[-1]]]],[[[24,[-1,-2]]],-3,[1,9],7,[]],[[[21,[-1,-2]]],-3,[1,9],7,[]],[[[25,[-1,-2]]],-3,[1,9],7,[]],[[[22,[-1,-2]]],-3,[1,9],7,[]],[[[21,[-1,-2]]],-3,[1,9],7,[]],[[[22,[-1,-2]]],-3,[1,9],7,[]],[[[21,[-1,-2]]],[[24,[-1,-2]]],[1,9],7],[[[22,[-1,-2]]],[[25,[-1,-2]]],[1,9],7],[[[24,[-1,-2]]],2,[1,9],7],[[[21,[-1,-2]]],2,[1,9],7],[[[25,[-1,-2]]],2,[1,9],7],[[[22,[-1,-2]]],2,[1,9],7],[[[24,[-1,-2]],-1],6,[],7],[[[21,[-1,-2]],-1],6,[],7],[[[25,[-1,-2]],-1],6,[],7],[[[22,[-1,-2]],-1],6,[],7],[[[24,[-1,-2]],12],13,[14,1,9],7],[[[21,[-1,-2]],12],13,[14,1,9],7],[[[25,[-1,-2]],12],13,[14,1,9],7],[[[22,[-1,-2]],12],13,[14,1,9],7],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[[[8,[-1,-2]],5],[[17,[[24,[-1,-2]]]]],[1,9],7],[[[18,[[8,[-1,-2]]]],5],[[17,[[25,[-1,-2]]]]],[1,9],7],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[24,[-1,-2]]],5,[1,9],7],[[[21,[-1,-2]]],5,[1,9],7],[[[25,[-1,-2]]],5,[1,9],7],[[[22,[-1,-2]]],5,[1,9],7],[[],[[8,[-1]]],[1,9]],[[],[[8,[-1,-2]]],[1,9],7],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,[[19,[-2]]],[],[]],[-1,20,[]],[-1,20,[]],[-1,20,[]],[-1,20,[]]],"c":[],"p":[[10,"Clear",0],[1,"tuple"],[5,"DefaultConfig",0],[5,"Slab",0],[1,"usize"],[1,"bool"],[10,"Config",0],[5,"Pool",0],[10,"Default",170],[5,"Entry",0],[5,"OwnedEntry",0],[5,"Formatter",171],[8,"Result",171],[10,"Debug",171],[5,"UniqueIter",0],[5,"VacantEntry",0],[6,"Option",172],[5,"Arc",173],[6,"Result",174],[5,"TypeId",175],[5,"RefMut",104],[5,"OwnedRefMut",104],[10,"FnOnce",176],[5,"Ref",104],[5,"OwnedRef",104]],"b":[]}],\ ["smallvec",{"doc":"Small vectors in various sizes. These store a certain …","t":"PKPGFFRFKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNMNNQNNNNMNNNNNNNNNNNNNNNNNNO","n":["AllocErr","Array","CapacityOverflow","CollectionAllocErr","Drain","IntoIter","Item","SmallVec","ToSmallVec","append","as_mut","as_mut_ptr","as_mut_slice","as_mut_slice","as_ptr","as_ref","as_slice","as_slice","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capacity","clear","clone","clone","clone_from","clone_into","clone_into","cmp","dedup","dedup_by","dedup_by_key","default","deref","deref_mut","drain","drop","drop","drop","eq","extend","extend_from_slice","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from_buf","from_buf_and_len","from_buf_and_len_unchecked","from_elem","from_iter","from_raw_parts","from_slice","from_vec","grow","hash","index","index_mut","inline_size","insert","insert_from_slice","insert_many","into","into","into","into","into_boxed_slice","into_inner","into_iter","into_iter","into_iter","into_iter","into_iter","into_vec","is_empty","len","len","new","next","next","next_back","next_back","partial_cmp","pop","push","remove","reserve","reserve_exact","resize","resize_with","retain","retain_mut","set_len","shrink_to_fit","size","size_hint","size_hint","smallvec","spilled","swap_remove","to_owned","to_owned","to_smallvec","to_string","truncate","try_from","try_from","try_from","try_from","try_grow","try_into","try_into","try_into","try_into","try_reserve","try_reserve_exact","type_id","type_id","type_id","type_id","with_capacity","layout"],"q":[[0,"smallvec"],[137,"smallvec::CollectionAllocErr"],[138,"core::clone"],[139,"core::cmp"],[140,"core::ops::function"],[141,"core::ops::range"],[142,"core::iter::traits::collect"],[143,"core::fmt"],[144,"core::fmt"],[145,"core::alloc::layout"],[146,"core::mem::maybe_uninit"],[147,"core::hash"],[148,"core::slice::index"],[149,"alloc::boxed"],[150,"core::result"],[151,"core::option"],[152,"alloc::string"],[153,"core::any"]],"d":["The allocator return an error","Types that can be used as the backing store for a SmallVec.","Overflow usize::MAX or other error during size computation","Error type for APIs with fallible heap allocation","An iterator that removes the items from a SmallVec and …","An iterator that consumes a SmallVec and yields its items …","The type of the array’s elements.","A Vec-like container that can store a small number of …","Convenience trait for constructing a SmallVec","Moves all the elements of other into self, leaving other …","","Returns a raw mutable pointer to the vector’s buffer.","Extracts a mutable slice of the entire vector.","Returns the remaining items of this iterator as a mutable …","Returns a raw pointer to the vector’s buffer.","","Extracts a slice containing the entire vector.","Returns the remaining items of this iterator as a slice.","","","","","","","","","","","The number of items the vector can hold without …","Remove all elements from the vector.","","","","","","","Removes consecutive duplicate elements.","Removes consecutive duplicate elements using the given …","Removes consecutive elements that map to the same key.","","","","Creates a draining iterator that removes the specified …","","","","","","Copy elements from a slice and append them to the vector.","","","","","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Constructs a new SmallVec on the stack from an A without …","Constructs a new SmallVec on the stack from an A without …","Constructs a new SmallVec on the stack from an A without …","Creates a SmallVec with n copies of elem.","","Creates a SmallVec directly from the raw components of …","Copy the elements from a slice into a new SmallVec.","Construct a new SmallVec from a Vec<A::Item>.","Re-allocate to set the capacity to …","","","","The maximum number of elements this vector can hold inline","Insert an element at position index, shifting all elements …","Copy elements from a slice into the vector at position …","Insert multiple elements at position index, shifting all …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Converts a SmallVec into a Box<[T]> without reallocating …","Convert the SmallVec into an A if possible. Otherwise …","","","","","","Convert a SmallVec to a Vec, without reallocating if the …","Returns true if the vector is empty","","The number of elements stored in the vector","Construct an empty vector","","","","","","Remove an item from the end of the vector and return it, …","Append an item to the vector.","Remove and return the element at position index, shifting …","Reserve capacity for additional more elements to be …","Reserve the minimum capacity for additional more elements …","Resizes the vector so that its length is equal to len.","Resizes the SmallVec in-place so that len is equal to …","Retains only the elements specified by the predicate.","Retains only the elements specified by the predicate.","Sets the length of a vector.","Shrink the capacity of the vector as much as possible.","Returns the number of items the array can hold.","","","Creates a SmallVec containing the arguments.","Returns true if the data has spilled into a separate …","Remove the element at position index, replacing it with …","","","Construct a new SmallVec from a slice.","","Shorten the vector, keeping the first len elements and …","","","","","Re-allocate to set the capacity to …","","","","","Reserve capacity for additional more elements to be …","Reserve the minimum capacity for additional more elements …","","","","","Construct an empty vector with enough capacity …","The layout that was passed to the allocator"],"i":[18,0,18,0,0,0,3,0,0,1,1,1,1,6,1,1,1,6,13,1,1,6,18,13,1,1,6,18,1,1,1,6,1,1,6,1,1,1,1,1,1,1,1,13,1,6,1,1,1,13,1,6,18,18,13,1,1,1,1,6,18,18,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,13,1,6,18,1,1,13,1,1,1,6,1,1,13,1,1,13,6,13,6,1,1,1,1,1,1,1,1,1,1,1,1,3,13,6,0,1,1,1,6,27,18,1,13,1,6,18,1,13,1,6,18,1,1,13,1,6,18,1,30],"f":[0,0,0,0,0,0,0,0,0,[[[1,[-1]],[1,[-2]]],2,3,[[3,[],[[4,[]]]]]],[[[1,[-1]]],5,3],[[[1,[-1]]],[],3],[[[1,[-1]]],5,3],[[[6,[-1]]],5,3],[[[1,[-1]]],[],3],[[[1,[-1]]],5,3],[[[1,[-1]]],5,3],[[[6,[-1]]],5,3],[-1,-2,[],[]],[[[1,[-1]]],5,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],5,3],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],7,3],[[[1,[-1]]],2,3],[[[1,[-1]]],[[1,[-1]]],3],[[[6,[-1]]],[[6,[-1]]],[3,8]],[[[1,[-1]],[1,[-1]]],2,3],[[-1,-2],2,[],[]],[[-1,-2],2,[],[]],[[[1,[-1]],[1,[-1]]],9,3],[[[1,[-1]]],2,3],[[[1,[-1]],-2],2,3,[[12,[],[[10,[11]]]]]],[[[1,[-1]],-3],2,3,[],[[12,[],[[10,[-2]]]]]],[[],[[1,[-1]]],3],[[[1,[-1]]],5,3],[[[1,[-1]]],5,3],[[[1,[-1]],-2],[[13,[-1]]],3,[[14,[7]]]],[[[13,[-1]]],2,3],[[[1,[-1]]],2,3],[[[6,[-1]]],2,3],[[[1,[-1]],[1,[-2]]],11,3,3],[[[1,[-1]],-2],2,3,[[15,[],[[4,[]]]]]],[[[1,[-1]],5],2,3],[[[13,[-1]],16],17,3],[[[1,[-1]],16],17,3],[[[6,[-1]],16],17,3],[[18,16],17],[[18,16],17],[-1,-1,[]],[19,[[1,[-1]]],3],[5,[[1,[-1]]],3],[-1,[[1,[-1]]],3],[-1,-1,[]],[-1,-1,[]],[-1,-1,[]],[20,18],[-1,[[1,[-1]]],3],[[-1,7],[[1,[-1]]],3],[[[21,[-1]],7],[[1,[-1]]],3],[7,[[1,[-1]]],3],[-1,[[1,[-2]]],[[15,[],[[4,[]]]]],3],[[7,7],[[1,[-1]]],3],[5,[[1,[-1]]],3],[19,[[1,[-1]]],3],[[[1,[-1]],7],2,3],[[[1,[-1]],-2],2,3,22],[[[1,[-1]],-2],[],3,[[23,[5]]]],[[[1,[-1]],-2],[],3,[[23,[5]]]],[[[1,[-1]]],7,3],[[[1,[-1]],7],2,3],[[[1,[-1]],7,5],2,3],[[[1,[-1]],7,-2],2,3,[[15,[],[[4,[]]]]]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[-1,-2,[],[]],[[[1,[-1]]],[[24,[5]]],3],[[[1,[-1]]],[[25,[-1,[1,[-1]]]]],3],[-1,-2,[],[]],[[[1,[-1]]],-2,3,[]],[[[1,[-1]]],-2,3,[]],[[[1,[-1]]],-2,3,[]],[-1,-2,[],[]],[[[1,[-1]]],19,3],[[[1,[-1]]],11,3],[[[13,[-1]]],7,3],[[[1,[-1]]],7,3],[[],[[1,[-1]]],3],[[[13,[-1]]],26,3],[[[6,[-1]]],26,3],[[[13,[-1]]],26,3],[[[6,[-1]]],26,3],[[[1,[-1]],[1,[-1]]],[[26,[9]]],3],[[[1,[-1]]],26,3],[[[1,[-1]]],2,3],[[[1,[-1]],7],[],3],[[[1,[-1]],7],2,3],[[[1,[-1]],7],2,3],[[[1,[-1]],7],2,3],[[[1,[-1]],7,-2],2,3,[[12,[],[[10,[]]]]]],[[[1,[-1]],-2],2,3,[[12,[],[[10,[11]]]]]],[[[1,[-1]],-2],2,3,[[12,[],[[10,[11]]]]]],[[[1,[-1]],7],2,3],[[[1,[-1]]],2,3],[[],7],[[[13,[-1]]],[[2,[7,[26,[7]]]]],3],[[[6,[-1]]],[[2,[7,[26,[7]]]]],3],0,[[[1,[-1]]],11,3],[[[1,[-1]],7],[],3],[-1,-2,[],[]],[-1,-2,[],[]],[27,[[1,[-1]]],3],[-1,28,[]],[[[1,[-1]],7],2,3],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[[[1,[-1]],7],[[25,[2,18]]],3],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[-1,[[25,[-2]]],[],[]],[[[1,[-1]],7],[[25,[2,18]]],3],[[[1,[-1]],7],[[25,[2,18]]],3],[-1,29,[]],[-1,29,[]],[-1,29,[]],[-1,29,[]],[7,[[1,[-1]]],3],0],"c":[],"p":[[5,"SmallVec",0],[1,"tuple"],[10,"Array",0],[17,"Item"],[1,"slice"],[5,"IntoIter",0],[1,"usize"],[10,"Clone",138],[6,"Ordering",139],[17,"Output"],[1,"bool"],[10,"FnMut",140],[5,"Drain",0],[10,"RangeBounds",141],[10,"IntoIterator",142],[5,"Formatter",143],[8,"Result",143],[6,"CollectionAllocErr",0],[5,"Vec",144],[8,"LayoutErr",145],[20,"MaybeUninit",146],[10,"Hasher",147],[10,"SliceIndex",148],[5,"Box",149],[6,"Result",150],[6,"Option",151],[10,"ToSmallVec",0],[5,"String",152],[5,"TypeId",153],[15,"AllocErr",137]],"b":[[52,"impl-Debug-for-CollectionAllocErr"],[53,"impl-Display-for-CollectionAllocErr"],[55,"impl-From%3CVec%3C%3CA+as+Array%3E::Item%3E%3E-for-SmallVec%3CA%3E"],[56,"impl-From%3C%26%5B%3CA+as+Array%3E::Item%5D%3E-for-SmallVec%3CA%3E"],[57,"impl-From%3CA%3E-for-SmallVec%3CA%3E"],[85,"impl-IntoIterator-for-%26SmallVec%3CA%3E"],[86,"impl-IntoIterator-for-%26mut+SmallVec%3CA%3E"],[87,"impl-IntoIterator-for-SmallVec%3CA%3E"]]}],\ diff --git a/src/edlang_ast/lib.rs.html b/src/edlang_ast/lib.rs.html index 0a423e6de7..68f4a21b5b 100644 --- a/src/edlang_ast/lib.rs.html +++ b/src/edlang_ast/lib.rs.html @@ -449,7 +449,7 @@ #[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct StructInitExpr { - pub name: Ident, + pub name: Type, pub fields: BTreeMap<Ident, StructInitField>, pub span: Span, } diff --git a/src/edlang_ir/lib.rs.html b/src/edlang_ir/lib.rs.html index 3b52a09368..8bf9320846 100644 --- a/src/edlang_ir/lib.rs.html +++ b/src/edlang_ir/lib.rs.html @@ -700,8 +700,8 @@ FnDef(DefId, Vec<TypeInfo>), // The vec are generic types, not arg types Ptr(Box<TypeInfo>), Ref(bool, Box<TypeInfo>), - Struct(DefId), -} + Struct(DefId), // todo, add generics +} impl TypeKind { pub const fn is_unit(&self) -> bool { diff --git a/src/edlang_lowering/lib.rs.html b/src/edlang_lowering/lib.rs.html index d322c8dbae..6142f3a6b6 100644 --- a/src/edlang_lowering/lib.rs.html +++ b/src/edlang_lowering/lib.rs.html @@ -1585,7 +1585,7 @@ .get_module_body() .symbols .structs - .get(&info.name.name) + .get(&info.name.name.name) .expect("struct not found"); ir::TypeKind::Struct(id) } @@ -1659,7 +1659,7 @@ .get_module_body() .symbols .structs - .get(&info.name.name) + .get(&info.name.name.name) .expect("struct not found"); let struct_body = builder.ctx.body.structs.get(&id).unwrap().clone(); let ty = TypeKind::Struct(id); diff --git a/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-f4c45d17631b1020/out/grammar.rs.html b/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-f4c45d17631b1020/out/grammar.rs.html index 496755dcf2..64d81e5d94 100644 --- a/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-f4c45d17631b1020/out/grammar.rs.html +++ b/src/edlang_parser/home/runner/work/edlang/edlang/target/debug/build/edlang_parser-f4c45d17631b1020/out/grammar.rs.html @@ -295018,8 +295018,12326 @@ 295017 295018 295019 +295020 +295021 +295022 +295023 +295024 +295025 +295026 +295027 +295028 +295029 +295030 +295031 +295032 +295033 +295034 +295035 +295036 +295037 +295038 +295039 +295040 +295041 +295042 +295043 +295044 +295045 +295046 +295047 +295048 +295049 +295050 +295051 +295052 +295053 +295054 +295055 +295056 +295057 +295058 +295059 +295060 +295061 +295062 +295063 +295064 +295065 +295066 +295067 +295068 +295069 +295070 +295071 +295072 +295073 +295074 +295075 +295076 +295077 +295078 +295079 +295080 +295081 +295082 +295083 +295084 +295085 +295086 +295087 +295088 +295089 +295090 +295091 +295092 +295093 +295094 +295095 +295096 +295097 +295098 +295099 +295100 +295101 +295102 +295103 +295104 +295105 +295106 +295107 +295108 +295109 +295110 +295111 +295112 +295113 +295114 +295115 +295116 +295117 +295118 +295119 +295120 +295121 +295122 +295123 +295124 +295125 +295126 +295127 +295128 +295129 +295130 +295131 +295132 +295133 +295134 +295135 +295136 +295137 +295138 +295139 +295140 +295141 +295142 +295143 +295144 +295145 +295146 +295147 +295148 +295149 +295150 +295151 +295152 +295153 +295154 +295155 +295156 +295157 +295158 +295159 +295160 +295161 +295162 +295163 +295164 +295165 +295166 +295167 +295168 +295169 +295170 +295171 +295172 +295173 +295174 +295175 +295176 +295177 +295178 +295179 +295180 +295181 +295182 +295183 +295184 +295185 +295186 +295187 +295188 +295189 +295190 +295191 +295192 +295193 +295194 +295195 +295196 +295197 +295198 +295199 +295200 +295201 +295202 +295203 +295204 +295205 +295206 +295207 +295208 +295209 +295210 +295211 +295212 +295213 +295214 +295215 +295216 +295217 +295218 +295219 +295220 +295221 +295222 +295223 +295224 +295225 +295226 +295227 +295228 +295229 +295230 +295231 +295232 +295233 +295234 +295235 +295236 +295237 +295238 +295239 +295240 +295241 +295242 +295243 +295244 +295245 +295246 +295247 +295248 +295249 +295250 +295251 +295252 +295253 +295254 +295255 +295256 +295257 +295258 +295259 +295260 +295261 +295262 +295263 +295264 +295265 +295266 +295267 +295268 +295269 +295270 +295271 +295272 +295273 +295274 +295275 +295276 +295277 +295278 +295279 +295280 +295281 +295282 +295283 +295284 +295285 +295286 +295287 +295288 +295289 +295290 +295291 +295292 +295293 +295294 +295295 +295296 +295297 +295298 +295299 +295300 +295301 +295302 +295303 +295304 +295305 +295306 +295307 +295308 +295309 +295310 +295311 +295312 +295313 +295314 +295315 +295316 +295317 +295318 +295319 +295320 +295321 +295322 +295323 +295324 +295325 +295326 +295327 +295328 +295329 +295330 +295331 +295332 +295333 +295334 +295335 +295336 +295337 +295338 +295339 +295340 +295341 +295342 +295343 +295344 +295345 +295346 +295347 +295348 +295349 +295350 +295351 +295352 +295353 +295354 +295355 +295356 +295357 +295358 +295359 +295360 +295361 +295362 +295363 +295364 +295365 +295366 +295367 +295368 +295369 +295370 +295371 +295372 +295373 +295374 +295375 +295376 +295377 +295378 +295379 +295380 +295381 +295382 +295383 +295384 +295385 +295386 +295387 +295388 +295389 +295390 +295391 +295392 +295393 +295394 +295395 +295396 +295397 +295398 +295399 +295400 +295401 +295402 +295403 +295404 +295405 +295406 +295407 +295408 +295409 +295410 +295411 +295412 +295413 +295414 +295415 +295416 +295417 +295418 +295419 +295420 +295421 +295422 +295423 +295424 +295425 +295426 +295427 +295428 +295429 +295430 +295431 +295432 +295433 +295434 +295435 +295436 +295437 +295438 +295439 +295440 +295441 +295442 +295443 +295444 +295445 +295446 +295447 +295448 +295449 +295450 +295451 +295452 +295453 +295454 +295455 +295456 +295457 +295458 +295459 +295460 +295461 +295462 +295463 +295464 +295465 +295466 +295467 +295468 +295469 +295470 +295471 +295472 +295473 +295474 +295475 +295476 +295477 +295478 +295479 +295480 +295481 +295482 +295483 +295484 +295485 +295486 +295487 +295488 +295489 +295490 +295491 +295492 +295493 +295494 +295495 +295496 +295497 +295498 +295499 +295500 +295501 +295502 +295503 +295504 +295505 +295506 +295507 +295508 +295509 +295510 +295511 +295512 +295513 +295514 +295515 +295516 +295517 +295518 +295519 +295520 +295521 +295522 +295523 +295524 +295525 +295526 +295527 +295528 +295529 +295530 +295531 +295532 +295533 +295534 +295535 +295536 +295537 +295538 +295539 +295540 +295541 +295542 +295543 +295544 +295545 +295546 +295547 +295548 +295549 +295550 +295551 +295552 +295553 +295554 +295555 +295556 +295557 +295558 +295559 +295560 +295561 +295562 +295563 +295564 +295565 +295566 +295567 +295568 +295569 +295570 +295571 +295572 +295573 +295574 +295575 +295576 +295577 +295578 +295579 +295580 +295581 +295582 +295583 +295584 +295585 +295586 +295587 +295588 +295589 +295590 +295591 +295592 +295593 +295594 +295595 +295596 +295597 +295598 +295599 +295600 +295601 +295602 +295603 +295604 +295605 +295606 +295607 +295608 +295609 +295610 +295611 +295612 +295613 +295614 +295615 +295616 +295617 +295618 +295619 +295620 +295621 +295622 +295623 +295624 +295625 +295626 +295627 +295628 +295629 +295630 +295631 +295632 +295633 +295634 +295635 +295636 +295637 +295638 +295639 +295640 +295641 +295642 +295643 +295644 +295645 +295646 +295647 +295648 +295649 +295650 +295651 +295652 +295653 +295654 +295655 +295656 +295657 +295658 +295659 +295660 +295661 +295662 +295663 +295664 +295665 +295666 +295667 +295668 +295669 +295670 +295671 +295672 +295673 +295674 +295675 +295676 +295677 +295678 +295679 +295680 +295681 +295682 +295683 +295684 +295685 +295686 +295687 +295688 +295689 +295690 +295691 +295692 +295693 +295694 +295695 +295696 +295697 +295698 +295699 +295700 +295701 +295702 +295703 +295704 +295705 +295706 +295707 +295708 +295709 +295710 +295711 +295712 +295713 +295714 +295715 +295716 +295717 +295718 +295719 +295720 +295721 +295722 +295723 +295724 +295725 +295726 +295727 +295728 +295729 +295730 +295731 +295732 +295733 +295734 +295735 +295736 +295737 +295738 +295739 +295740 +295741 +295742 +295743 +295744 +295745 +295746 +295747 +295748 +295749 +295750 +295751 +295752 +295753 +295754 +295755 +295756 +295757 +295758 +295759 +295760 +295761 +295762 +295763 +295764 +295765 +295766 +295767 +295768 +295769 +295770 +295771 +295772 +295773 +295774 +295775 +295776 +295777 +295778 +295779 +295780 +295781 +295782 +295783 +295784 +295785 +295786 +295787 +295788 +295789 +295790 +295791 +295792 +295793 +295794 +295795 +295796 +295797 +295798 +295799 +295800 +295801 +295802 +295803 +295804 +295805 +295806 +295807 +295808 +295809 +295810 +295811 +295812 +295813 +295814 +295815 +295816 +295817 +295818 +295819 +295820 +295821 +295822 +295823 +295824 +295825 +295826 +295827 +295828 +295829 +295830 +295831 +295832 +295833 +295834 +295835 +295836 +295837 +295838 +295839 +295840 +295841 +295842 +295843 +295844 +295845 +295846 +295847 +295848 +295849 +295850 +295851 +295852 +295853 +295854 +295855 +295856 +295857 +295858 +295859 +295860 +295861 +295862 +295863 +295864 +295865 +295866 +295867 +295868 +295869 +295870 +295871 +295872 +295873 +295874 +295875 +295876 +295877 +295878 +295879 +295880 +295881 +295882 +295883 +295884 +295885 +295886 +295887 +295888 +295889 +295890 +295891 +295892 +295893 +295894 +295895 +295896 +295897 +295898 +295899 +295900 +295901 +295902 +295903 +295904 +295905 +295906 +295907 +295908 +295909 +295910 +295911 +295912 +295913 +295914 +295915 +295916 +295917 +295918 +295919 +295920 +295921 +295922 +295923 +295924 +295925 +295926 +295927 +295928 +295929 +295930 +295931 +295932 +295933 +295934 +295935 +295936 +295937 +295938 +295939 +295940 +295941 +295942 +295943 +295944 +295945 +295946 +295947 +295948 +295949 +295950 +295951 +295952 +295953 +295954 +295955 +295956 +295957 +295958 +295959 +295960 +295961 +295962 +295963 +295964 +295965 +295966 +295967 +295968 +295969 +295970 +295971 +295972 +295973 +295974 +295975 +295976 +295977 +295978 +295979 +295980 +295981 +295982 +295983 +295984 +295985 +295986 +295987 +295988 +295989 +295990 +295991 +295992 +295993 +295994 +295995 +295996 +295997 +295998 +295999 +296000 +296001 +296002 +296003 +296004 +296005 +296006 +296007 +296008 +296009 +296010 +296011 +296012 +296013 +296014 +296015 +296016 +296017 +296018 +296019 +296020 +296021 +296022 +296023 +296024 +296025 +296026 +296027 +296028 +296029 +296030 +296031 +296032 +296033 +296034 +296035 +296036 +296037 +296038 +296039 +296040 +296041 +296042 +296043 +296044 +296045 +296046 +296047 +296048 +296049 +296050 +296051 +296052 +296053 +296054 +296055 +296056 +296057 +296058 +296059 +296060 +296061 +296062 +296063 +296064 +296065 +296066 +296067 +296068 +296069 +296070 +296071 +296072 +296073 +296074 +296075 +296076 +296077 +296078 +296079 +296080 +296081 +296082 +296083 +296084 +296085 +296086 +296087 +296088 +296089 +296090 +296091 +296092 +296093 +296094 +296095 +296096 +296097 +296098 +296099 +296100 +296101 +296102 +296103 +296104 +296105 +296106 +296107 +296108 +296109 +296110 +296111 +296112 +296113 +296114 +296115 +296116 +296117 +296118 +296119 +296120 +296121 +296122 +296123 +296124 +296125 +296126 +296127 +296128 +296129 +296130 +296131 +296132 +296133 +296134 +296135 +296136 +296137 +296138 +296139 +296140 +296141 +296142 +296143 +296144 +296145 +296146 +296147 +296148 +296149 +296150 +296151 +296152 +296153 +296154 +296155 +296156 +296157 +296158 +296159 +296160 +296161 +296162 +296163 +296164 +296165 +296166 +296167 +296168 +296169 +296170 +296171 +296172 +296173 +296174 +296175 +296176 +296177 +296178 +296179 +296180 +296181 +296182 +296183 +296184 +296185 +296186 +296187 +296188 +296189 +296190 +296191 +296192 +296193 +296194 +296195 +296196 +296197 +296198 +296199 +296200 +296201 +296202 +296203 +296204 +296205 +296206 +296207 +296208 +296209 +296210 +296211 +296212 +296213 +296214 +296215 +296216 +296217 +296218 +296219 +296220 +296221 +296222 +296223 +296224 +296225 +296226 +296227 +296228 +296229 +296230 +296231 +296232 +296233 +296234 +296235 +296236 +296237 +296238 +296239 +296240 +296241 +296242 +296243 +296244 +296245 +296246 +296247 +296248 +296249 +296250 +296251 +296252 +296253 +296254 +296255 +296256 +296257 +296258 +296259 +296260 +296261 +296262 +296263 +296264 +296265 +296266 +296267 +296268 +296269 +296270 +296271 +296272 +296273 +296274 +296275 +296276 +296277 +296278 +296279 +296280 +296281 +296282 +296283 +296284 +296285 +296286 +296287 +296288 +296289 +296290 +296291 +296292 +296293 +296294 +296295 +296296 +296297 +296298 +296299 +296300 +296301 +296302 +296303 +296304 +296305 +296306 +296307 +296308 +296309 +296310 +296311 +296312 +296313 +296314 +296315 +296316 +296317 +296318 +296319 +296320 +296321 +296322 +296323 +296324 +296325 +296326 +296327 +296328 +296329 +296330 +296331 +296332 +296333 +296334 +296335 +296336 +296337 +296338 +296339 +296340 +296341 +296342 +296343 +296344 +296345 +296346 +296347 +296348 +296349 +296350 +296351 +296352 +296353 +296354 +296355 +296356 +296357 +296358 +296359 +296360 +296361 +296362 +296363 +296364 +296365 +296366 +296367 +296368 +296369 +296370 +296371 +296372 +296373 +296374 +296375 +296376 +296377 +296378 +296379 +296380 +296381 +296382 +296383 +296384 +296385 +296386 +296387 +296388 +296389 +296390 +296391 +296392 +296393 +296394 +296395 +296396 +296397 +296398 +296399 +296400 +296401 +296402 +296403 +296404 +296405 +296406 +296407 +296408 +296409 +296410 +296411 +296412 +296413 +296414 +296415 +296416 +296417 +296418 +296419 +296420 +296421 +296422 +296423 +296424 +296425 +296426 +296427 +296428 +296429 +296430 +296431 +296432 +296433 +296434 +296435 +296436 +296437 +296438 +296439 +296440 +296441 +296442 +296443 +296444 +296445 +296446 +296447 +296448 +296449 +296450 +296451 +296452 +296453 +296454 +296455 +296456 +296457 +296458 +296459 +296460 +296461 +296462 +296463 +296464 +296465 +296466 +296467 +296468 +296469 +296470 +296471 +296472 +296473 +296474 +296475 +296476 +296477 +296478 +296479 +296480 +296481 +296482 +296483 +296484 +296485 +296486 +296487 +296488 +296489 +296490 +296491 +296492 +296493 +296494 +296495 +296496 +296497 +296498 +296499 +296500 +296501 +296502 +296503 +296504 +296505 +296506 +296507 +296508 +296509 +296510 +296511 +296512 +296513 +296514 +296515 +296516 +296517 +296518 +296519 +296520 +296521 +296522 +296523 +296524 +296525 +296526 +296527 +296528 +296529 +296530 +296531 +296532 +296533 +296534 +296535 +296536 +296537 +296538 +296539 +296540 +296541 +296542 +296543 +296544 +296545 +296546 +296547 +296548 +296549 +296550 +296551 +296552 +296553 +296554 +296555 +296556 +296557 +296558 +296559 +296560 +296561 +296562 +296563 +296564 +296565 +296566 +296567 +296568 +296569 +296570 +296571 +296572 +296573 +296574 +296575 +296576 +296577 +296578 +296579 +296580 +296581 +296582 +296583 +296584 +296585 +296586 +296587 +296588 +296589 +296590 +296591 +296592 +296593 +296594 +296595 +296596 +296597 +296598 +296599 +296600 +296601 +296602 +296603 +296604 +296605 +296606 +296607 +296608 +296609 +296610 +296611 +296612 +296613 +296614 +296615 +296616 +296617 +296618 +296619 +296620 +296621 +296622 +296623 +296624 +296625 +296626 +296627 +296628 +296629 +296630 +296631 +296632 +296633 +296634 +296635 +296636 +296637 +296638 +296639 +296640 +296641 +296642 +296643 +296644 +296645 +296646 +296647 +296648 +296649 +296650 +296651 +296652 +296653 +296654 +296655 +296656 +296657 +296658 +296659 +296660 +296661 +296662 +296663 +296664 +296665 +296666 +296667 +296668 +296669 +296670 +296671 +296672 +296673 +296674 +296675 +296676 +296677 +296678 +296679 +296680 +296681 +296682 +296683 +296684 +296685 +296686 +296687 +296688 +296689 +296690 +296691 +296692 +296693 +296694 +296695 +296696 +296697 +296698 +296699 +296700 +296701 +296702 +296703 +296704 +296705 +296706 +296707 +296708 +296709 +296710 +296711 +296712 +296713 +296714 +296715 +296716 +296717 +296718 +296719 +296720 +296721 +296722 +296723 +296724 +296725 +296726 +296727 +296728 +296729 +296730 +296731 +296732 +296733 +296734 +296735 +296736 +296737 +296738 +296739 +296740 +296741 +296742 +296743 +296744 +296745 +296746 +296747 +296748 +296749 +296750 +296751 +296752 +296753 +296754 +296755 +296756 +296757 +296758 +296759 +296760 +296761 +296762 +296763 +296764 +296765 +296766 +296767 +296768 +296769 +296770 +296771 +296772 +296773 +296774 +296775 +296776 +296777 +296778 +296779 +296780 +296781 +296782 +296783 +296784 +296785 +296786 +296787 +296788 +296789 +296790 +296791 +296792 +296793 +296794 +296795 +296796 +296797 +296798 +296799 +296800 +296801 +296802 +296803 +296804 +296805 +296806 +296807 +296808 +296809 +296810 +296811 +296812 +296813 +296814 +296815 +296816 +296817 +296818 +296819 +296820 +296821 +296822 +296823 +296824 +296825 +296826 +296827 +296828 +296829 +296830 +296831 +296832 +296833 +296834 +296835 +296836 +296837 +296838 +296839 +296840 +296841 +296842 +296843 +296844 +296845 +296846 +296847 +296848 +296849 +296850 +296851 +296852 +296853 +296854 +296855 +296856 +296857 +296858 +296859 +296860 +296861 +296862 +296863 +296864 +296865 +296866 +296867 +296868 +296869 +296870 +296871 +296872 +296873 +296874 +296875 +296876 +296877 +296878 +296879 +296880 +296881 +296882 +296883 +296884 +296885 +296886 +296887 +296888 +296889 +296890 +296891 +296892 +296893 +296894 +296895 +296896 +296897 +296898 +296899 +296900 +296901 +296902 +296903 +296904 +296905 +296906 +296907 +296908 +296909 +296910 +296911 +296912 +296913 +296914 +296915 +296916 +296917 +296918 +296919 +296920 +296921 +296922 +296923 +296924 +296925 +296926 +296927 +296928 +296929 +296930 +296931 +296932 +296933 +296934 +296935 +296936 +296937 +296938 +296939 +296940 +296941 +296942 +296943 +296944 +296945 +296946 +296947 +296948 +296949 +296950 +296951 +296952 +296953 +296954 +296955 +296956 +296957 +296958 +296959 +296960 +296961 +296962 +296963 +296964 +296965 +296966 +296967 +296968 +296969 +296970 +296971 +296972 +296973 +296974 +296975 +296976 +296977 +296978 +296979 +296980 +296981 +296982 +296983 +296984 +296985 +296986 +296987 +296988 +296989 +296990 +296991 +296992 +296993 +296994 +296995 +296996 +296997 +296998 +296999 +297000 +297001 +297002 +297003 +297004 +297005 +297006 +297007 +297008 +297009 +297010 +297011 +297012 +297013 +297014 +297015 +297016 +297017 +297018 +297019 +297020 +297021 +297022 +297023 +297024 +297025 +297026 +297027 +297028 +297029 +297030 +297031 +297032 +297033 +297034 +297035 +297036 +297037 +297038 +297039 +297040 +297041 +297042 +297043 +297044 +297045 +297046 +297047 +297048 +297049 +297050 +297051 +297052 +297053 +297054 +297055 +297056 +297057 +297058 +297059 +297060 +297061 +297062 +297063 +297064 +297065 +297066 +297067 +297068 +297069 +297070 +297071 +297072 +297073 +297074 +297075 +297076 +297077 +297078 +297079 +297080 +297081 +297082 +297083 +297084 +297085 +297086 +297087 +297088 +297089 +297090 +297091 +297092 +297093 +297094 +297095 +297096 +297097 +297098 +297099 +297100 +297101 +297102 +297103 +297104 +297105 +297106 +297107 +297108 +297109 +297110 +297111 +297112 +297113 +297114 +297115 +297116 +297117 +297118 +297119 +297120 +297121 +297122 +297123 +297124 +297125 +297126 +297127 +297128 +297129 +297130 +297131 +297132 +297133 +297134 +297135 +297136 +297137 +297138 +297139 +297140 +297141 +297142 +297143 +297144 +297145 +297146 +297147 +297148 +297149 +297150 +297151 +297152 +297153 +297154 +297155 +297156 +297157 +297158 +297159 +297160 +297161 +297162 +297163 +297164 +297165 +297166 +297167 +297168 +297169 +297170 +297171 +297172 +297173 +297174 +297175 +297176 +297177 +297178 +297179 +297180 +297181 +297182 +297183 +297184 +297185 +297186 +297187 +297188 +297189 +297190 +297191 +297192 +297193 +297194 +297195 +297196 +297197 +297198 +297199 +297200 +297201 +297202 +297203 +297204 +297205 +297206 +297207 +297208 +297209 +297210 +297211 +297212 +297213 +297214 +297215 +297216 +297217 +297218 +297219 +297220 +297221 +297222 +297223 +297224 +297225 +297226 +297227 +297228 +297229 +297230 +297231 +297232 +297233 +297234 +297235 +297236 +297237 +297238 +297239 +297240 +297241 +297242 +297243 +297244 +297245 +297246 +297247 +297248 +297249 +297250 +297251 +297252 +297253 +297254 +297255 +297256 +297257 +297258 +297259 +297260 +297261 +297262 +297263 +297264 +297265 +297266 +297267 +297268 +297269 +297270 +297271 +297272 +297273 +297274 +297275 +297276 +297277 +297278 +297279 +297280 +297281 +297282 +297283 +297284 +297285 +297286 +297287 +297288 +297289 +297290 +297291 +297292 +297293 +297294 +297295 +297296 +297297 +297298 +297299 +297300 +297301 +297302 +297303 +297304 +297305 +297306 +297307 +297308 +297309 +297310 +297311 +297312 +297313 +297314 +297315 +297316 +297317 +297318 +297319 +297320 +297321 +297322 +297323 +297324 +297325 +297326 +297327 +297328 +297329 +297330 +297331 +297332 +297333 +297334 +297335 +297336 +297337 +297338 +297339 +297340 +297341 +297342 +297343 +297344 +297345 +297346 +297347 +297348 +297349 +297350 +297351 +297352 +297353 +297354 +297355 +297356 +297357 +297358 +297359 +297360 +297361 +297362 +297363 +297364 +297365 +297366 +297367 +297368 +297369 +297370 +297371 +297372 +297373 +297374 +297375 +297376 +297377 +297378 +297379 +297380 +297381 +297382 +297383 +297384 +297385 +297386 +297387 +297388 +297389 +297390 +297391 +297392 +297393 +297394 +297395 +297396 +297397 +297398 +297399 +297400 +297401 +297402 +297403 +297404 +297405 +297406 +297407 +297408 +297409 +297410 +297411 +297412 +297413 +297414 +297415 +297416 +297417 +297418 +297419 +297420 +297421 +297422 +297423 +297424 +297425 +297426 +297427 +297428 +297429 +297430 +297431 +297432 +297433 +297434 +297435 +297436 +297437 +297438 +297439 +297440 +297441 +297442 +297443 +297444 +297445 +297446 +297447 +297448 +297449 +297450 +297451 +297452 +297453 +297454 +297455 +297456 +297457 +297458 +297459 +297460 +297461 +297462 +297463 +297464 +297465 +297466 +297467 +297468 +297469 +297470 +297471 +297472 +297473 +297474 +297475 +297476 +297477 +297478 +297479 +297480 +297481 +297482 +297483 +297484 +297485 +297486 +297487 +297488 +297489 +297490 +297491 +297492 +297493 +297494 +297495 +297496 +297497 +297498 +297499 +297500 +297501 +297502 +297503 +297504 +297505 +297506 +297507 +297508 +297509 +297510 +297511 +297512 +297513 +297514 +297515 +297516 +297517 +297518 +297519 +297520 +297521 +297522 +297523 +297524 +297525 +297526 +297527 +297528 +297529 +297530 +297531 +297532 +297533 +297534 +297535 +297536 +297537 +297538 +297539 +297540 +297541 +297542 +297543 +297544 +297545 +297546 +297547 +297548 +297549 +297550 +297551 +297552 +297553 +297554 +297555 +297556 +297557 +297558 +297559 +297560 +297561 +297562 +297563 +297564 +297565 +297566 +297567 +297568 +297569 +297570 +297571 +297572 +297573 +297574 +297575 +297576 +297577 +297578 +297579 +297580 +297581 +297582 +297583 +297584 +297585 +297586 +297587 +297588 +297589 +297590 +297591 +297592 +297593 +297594 +297595 +297596 +297597 +297598 +297599 +297600 +297601 +297602 +297603 +297604 +297605 +297606 +297607 +297608 +297609 +297610 +297611 +297612 +297613 +297614 +297615 +297616 +297617 +297618 +297619 +297620 +297621 +297622 +297623 +297624 +297625 +297626 +297627 +297628 +297629 +297630 +297631 +297632 +297633 +297634 +297635 +297636 +297637 +297638 +297639 +297640 +297641 +297642 +297643 +297644 +297645 +297646 +297647 +297648 +297649 +297650 +297651 +297652 +297653 +297654 +297655 +297656 +297657 +297658 +297659 +297660 +297661 +297662 +297663 +297664 +297665 +297666 +297667 +297668 +297669 +297670 +297671 +297672 +297673 +297674 +297675 +297676 +297677 +297678 +297679 +297680 +297681 +297682 +297683 +297684 +297685 +297686 +297687 +297688 +297689 +297690 +297691 +297692 +297693 +297694 +297695 +297696 +297697 +297698 +297699 +297700 +297701 +297702 +297703 +297704 +297705 +297706 +297707 +297708 +297709 +297710 +297711 +297712 +297713 +297714 +297715 +297716 +297717 +297718 +297719 +297720 +297721 +297722 +297723 +297724 +297725 +297726 +297727 +297728 +297729 +297730 +297731 +297732 +297733 +297734 +297735 +297736 +297737 +297738 +297739 +297740 +297741 +297742 +297743 +297744 +297745 +297746 +297747 +297748 +297749 +297750 +297751 +297752 +297753 +297754 +297755 +297756 +297757 +297758 +297759 +297760 +297761 +297762 +297763 +297764 +297765 +297766 +297767 +297768 +297769 +297770 +297771 +297772 +297773 +297774 +297775 +297776 +297777 +297778 +297779 +297780 +297781 +297782 +297783 +297784 +297785 +297786 +297787 +297788 +297789 +297790 +297791 +297792 +297793 +297794 +297795 +297796 +297797 +297798 +297799 +297800 +297801 +297802 +297803 +297804 +297805 +297806 +297807 +297808 +297809 +297810 +297811 +297812 +297813 +297814 +297815 +297816 +297817 +297818 +297819 +297820 +297821 +297822 +297823 +297824 +297825 +297826 +297827 +297828 +297829 +297830 +297831 +297832 +297833 +297834 +297835 +297836 +297837 +297838 +297839 +297840 +297841 +297842 +297843 +297844 +297845 +297846 +297847 +297848 +297849 +297850 +297851 +297852 +297853 +297854 +297855 +297856 +297857 +297858 +297859 +297860 +297861 +297862 +297863 +297864 +297865 +297866 +297867 +297868 +297869 +297870 +297871 +297872 +297873 +297874 +297875 +297876 +297877 +297878 +297879 +297880 +297881 +297882 +297883 +297884 +297885 +297886 +297887 +297888 +297889 +297890 +297891 +297892 +297893 +297894 +297895 +297896 +297897 +297898 +297899 +297900 +297901 +297902 +297903 +297904 +297905 +297906 +297907 +297908 +297909 +297910 +297911 +297912 +297913 +297914 +297915 +297916 +297917 +297918 +297919 +297920 +297921 +297922 +297923 +297924 +297925 +297926 +297927 +297928 +297929 +297930 +297931 +297932 +297933 +297934 +297935 +297936 +297937 +297938 +297939 +297940 +297941 +297942 +297943 +297944 +297945 +297946 +297947 +297948 +297949 +297950 +297951 +297952 +297953 +297954 +297955 +297956 +297957 +297958 +297959 +297960 +297961 +297962 +297963 +297964 +297965 +297966 +297967 +297968 +297969 +297970 +297971 +297972 +297973 +297974 +297975 +297976 +297977 +297978 +297979 +297980 +297981 +297982 +297983 +297984 +297985 +297986 +297987 +297988 +297989 +297990 +297991 +297992 +297993 +297994 +297995 +297996 +297997 +297998 +297999 +298000 +298001 +298002 +298003 +298004 +298005 +298006 +298007 +298008 +298009 +298010 +298011 +298012 +298013 +298014 +298015 +298016 +298017 +298018 +298019 +298020 +298021 +298022 +298023 +298024 +298025 +298026 +298027 +298028 +298029 +298030 +298031 +298032 +298033 +298034 +298035 +298036 +298037 +298038 +298039 +298040 +298041 +298042 +298043 +298044 +298045 +298046 +298047 +298048 +298049 +298050 +298051 +298052 +298053 +298054 +298055 +298056 +298057 +298058 +298059 +298060 +298061 +298062 +298063 +298064 +298065 +298066 +298067 +298068 +298069 +298070 +298071 +298072 +298073 +298074 +298075 +298076 +298077 +298078 +298079 +298080 +298081 +298082 +298083 +298084 +298085 +298086 +298087 +298088 +298089 +298090 +298091 +298092 +298093 +298094 +298095 +298096 +298097 +298098 +298099 +298100 +298101 +298102 +298103 +298104 +298105 +298106 +298107 +298108 +298109 +298110 +298111 +298112 +298113 +298114 +298115 +298116 +298117 +298118 +298119 +298120 +298121 +298122 +298123 +298124 +298125 +298126 +298127 +298128 +298129 +298130 +298131 +298132 +298133 +298134 +298135 +298136 +298137 +298138 +298139 +298140 +298141 +298142 +298143 +298144 +298145 +298146 +298147 +298148 +298149 +298150 +298151 +298152 +298153 +298154 +298155 +298156 +298157 +298158 +298159 +298160 +298161 +298162 +298163 +298164 +298165 +298166 +298167 +298168 +298169 +298170 +298171 +298172 +298173 +298174 +298175 +298176 +298177 +298178 +298179 +298180 +298181 +298182 +298183 +298184 +298185 +298186 +298187 +298188 +298189 +298190 +298191 +298192 +298193 +298194 +298195 +298196 +298197 +298198 +298199 +298200 +298201 +298202 +298203 +298204 +298205 +298206 +298207 +298208 +298209 +298210 +298211 +298212 +298213 +298214 +298215 +298216 +298217 +298218 +298219 +298220 +298221 +298222 +298223 +298224 +298225 +298226 +298227 +298228 +298229 +298230 +298231 +298232 +298233 +298234 +298235 +298236 +298237 +298238 +298239 +298240 +298241 +298242 +298243 +298244 +298245 +298246 +298247 +298248 +298249 +298250 +298251 +298252 +298253 +298254 +298255 +298256 +298257 +298258 +298259 +298260 +298261 +298262 +298263 +298264 +298265 +298266 +298267 +298268 +298269 +298270 +298271 +298272 +298273 +298274 +298275 +298276 +298277 +298278 +298279 +298280 +298281 +298282 +298283 +298284 +298285 +298286 +298287 +298288 +298289 +298290 +298291 +298292 +298293 +298294 +298295 +298296 +298297 +298298 +298299 +298300 +298301 +298302 +298303 +298304 +298305 +298306 +298307 +298308 +298309 +298310 +298311 +298312 +298313 +298314 +298315 +298316 +298317 +298318 +298319 +298320 +298321 +298322 +298323 +298324 +298325 +298326 +298327 +298328 +298329 +298330 +298331 +298332 +298333 +298334 +298335 +298336 +298337 +298338 +298339 +298340 +298341 +298342 +298343 +298344 +298345 +298346 +298347 +298348 +298349 +298350 +298351 +298352 +298353 +298354 +298355 +298356 +298357 +298358 +298359 +298360 +298361 +298362 +298363 +298364 +298365 +298366 +298367 +298368 +298369 +298370 +298371 +298372 +298373 +298374 +298375 +298376 +298377 +298378 +298379 +298380 +298381 +298382 +298383 +298384 +298385 +298386 +298387 +298388 +298389 +298390 +298391 +298392 +298393 +298394 +298395 +298396 +298397 +298398 +298399 +298400 +298401 +298402 +298403 +298404 +298405 +298406 +298407 +298408 +298409 +298410 +298411 +298412 +298413 +298414 +298415 +298416 +298417 +298418 +298419 +298420 +298421 +298422 +298423 +298424 +298425 +298426 +298427 +298428 +298429 +298430 +298431 +298432 +298433 +298434 +298435 +298436 +298437 +298438 +298439 +298440 +298441 +298442 +298443 +298444 +298445 +298446 +298447 +298448 +298449 +298450 +298451 +298452 +298453 +298454 +298455 +298456 +298457 +298458 +298459 +298460 +298461 +298462 +298463 +298464 +298465 +298466 +298467 +298468 +298469 +298470 +298471 +298472 +298473 +298474 +298475 +298476 +298477 +298478 +298479 +298480 +298481 +298482 +298483 +298484 +298485 +298486 +298487 +298488 +298489 +298490 +298491 +298492 +298493 +298494 +298495 +298496 +298497 +298498 +298499 +298500 +298501 +298502 +298503 +298504 +298505 +298506 +298507 +298508 +298509 +298510 +298511 +298512 +298513 +298514 +298515 +298516 +298517 +298518 +298519 +298520 +298521 +298522 +298523 +298524 +298525 +298526 +298527 +298528 +298529 +298530 +298531 +298532 +298533 +298534 +298535 +298536 +298537 +298538 +298539 +298540 +298541 +298542 +298543 +298544 +298545 +298546 +298547 +298548 +298549 +298550 +298551 +298552 +298553 +298554 +298555 +298556 +298557 +298558 +298559 +298560 +298561 +298562 +298563 +298564 +298565 +298566 +298567 +298568 +298569 +298570 +298571 +298572 +298573 +298574 +298575 +298576 +298577 +298578 +298579 +298580 +298581 +298582 +298583 +298584 +298585 +298586 +298587 +298588 +298589 +298590 +298591 +298592 +298593 +298594 +298595 +298596 +298597 +298598 +298599 +298600 +298601 +298602 +298603 +298604 +298605 +298606 +298607 +298608 +298609 +298610 +298611 +298612 +298613 +298614 +298615 +298616 +298617 +298618 +298619 +298620 +298621 +298622 +298623 +298624 +298625 +298626 +298627 +298628 +298629 +298630 +298631 +298632 +298633 +298634 +298635 +298636 +298637 +298638 +298639 +298640 +298641 +298642 +298643 +298644 +298645 +298646 +298647 +298648 +298649 +298650 +298651 +298652 +298653 +298654 +298655 +298656 +298657 +298658 +298659 +298660 +298661 +298662 +298663 +298664 +298665 +298666 +298667 +298668 +298669 +298670 +298671 +298672 +298673 +298674 +298675 +298676 +298677 +298678 +298679 +298680 +298681 +298682 +298683 +298684 +298685 +298686 +298687 +298688 +298689 +298690 +298691 +298692 +298693 +298694 +298695 +298696 +298697 +298698 +298699 +298700 +298701 +298702 +298703 +298704 +298705 +298706 +298707 +298708 +298709 +298710 +298711 +298712 +298713 +298714 +298715 +298716 +298717 +298718 +298719 +298720 +298721 +298722 +298723 +298724 +298725 +298726 +298727 +298728 +298729 +298730 +298731 +298732 +298733 +298734 +298735 +298736 +298737 +298738 +298739 +298740 +298741 +298742 +298743 +298744 +298745 +298746 +298747 +298748 +298749 +298750 +298751 +298752 +298753 +298754 +298755 +298756 +298757 +298758 +298759 +298760 +298761 +298762 +298763 +298764 +298765 +298766 +298767 +298768 +298769 +298770 +298771 +298772 +298773 +298774 +298775 +298776 +298777 +298778 +298779 +298780 +298781 +298782 +298783 +298784 +298785 +298786 +298787 +298788 +298789 +298790 +298791 +298792 +298793 +298794 +298795 +298796 +298797 +298798 +298799 +298800 +298801 +298802 +298803 +298804 +298805 +298806 +298807 +298808 +298809 +298810 +298811 +298812 +298813 +298814 +298815 +298816 +298817 +298818 +298819 +298820 +298821 +298822 +298823 +298824 +298825 +298826 +298827 +298828 +298829 +298830 +298831 +298832 +298833 +298834 +298835 +298836 +298837 +298838 +298839 +298840 +298841 +298842 +298843 +298844 +298845 +298846 +298847 +298848 +298849 +298850 +298851 +298852 +298853 +298854 +298855 +298856 +298857 +298858 +298859 +298860 +298861 +298862 +298863 +298864 +298865 +298866 +298867 +298868 +298869 +298870 +298871 +298872 +298873 +298874 +298875 +298876 +298877 +298878 +298879 +298880 +298881 +298882 +298883 +298884 +298885 +298886 +298887 +298888 +298889 +298890 +298891 +298892 +298893 +298894 +298895 +298896 +298897 +298898 +298899 +298900 +298901 +298902 +298903 +298904 +298905 +298906 +298907 +298908 +298909 +298910 +298911 +298912 +298913 +298914 +298915 +298916 +298917 +298918 +298919 +298920 +298921 +298922 +298923 +298924 +298925 +298926 +298927 +298928 +298929 +298930 +298931 +298932 +298933 +298934 +298935 +298936 +298937 +298938 +298939 +298940 +298941 +298942 +298943 +298944 +298945 +298946 +298947 +298948 +298949 +298950 +298951 +298952 +298953 +298954 +298955 +298956 +298957 +298958 +298959 +298960 +298961 +298962 +298963 +298964 +298965 +298966 +298967 +298968 +298969 +298970 +298971 +298972 +298973 +298974 +298975 +298976 +298977 +298978 +298979 +298980 +298981 +298982 +298983 +298984 +298985 +298986 +298987 +298988 +298989 +298990 +298991 +298992 +298993 +298994 +298995 +298996 +298997 +298998 +298999 +299000 +299001 +299002 +299003 +299004 +299005 +299006 +299007 +299008 +299009 +299010 +299011 +299012 +299013 +299014 +299015 +299016 +299017 +299018 +299019 +299020 +299021 +299022 +299023 +299024 +299025 +299026 +299027 +299028 +299029 +299030 +299031 +299032 +299033 +299034 +299035 +299036 +299037 +299038 +299039 +299040 +299041 +299042 +299043 +299044 +299045 +299046 +299047 +299048 +299049 +299050 +299051 +299052 +299053 +299054 +299055 +299056 +299057 +299058 +299059 +299060 +299061 +299062 +299063 +299064 +299065 +299066 +299067 +299068 +299069 +299070 +299071 +299072 +299073 +299074 +299075 +299076 +299077 +299078 +299079 +299080 +299081 +299082 +299083 +299084 +299085 +299086 +299087 +299088 +299089 +299090 +299091 +299092 +299093 +299094 +299095 +299096 +299097 +299098 +299099 +299100 +299101 +299102 +299103 +299104 +299105 +299106 +299107 +299108 +299109 +299110 +299111 +299112 +299113 +299114 +299115 +299116 +299117 +299118 +299119 +299120 +299121 +299122 +299123 +299124 +299125 +299126 +299127 +299128 +299129 +299130 +299131 +299132 +299133 +299134 +299135 +299136 +299137 +299138 +299139 +299140 +299141 +299142 +299143 +299144 +299145 +299146 +299147 +299148 +299149 +299150 +299151 +299152 +299153 +299154 +299155 +299156 +299157 +299158 +299159 +299160 +299161 +299162 +299163 +299164 +299165 +299166 +299167 +299168 +299169 +299170 +299171 +299172 +299173 +299174 +299175 +299176 +299177 +299178 +299179 +299180 +299181 +299182 +299183 +299184 +299185 +299186 +299187 +299188 +299189 +299190 +299191 +299192 +299193 +299194 +299195 +299196 +299197 +299198 +299199 +299200 +299201 +299202 +299203 +299204 +299205 +299206 +299207 +299208 +299209 +299210 +299211 +299212 +299213 +299214 +299215 +299216 +299217 +299218 +299219 +299220 +299221 +299222 +299223 +299224 +299225 +299226 +299227 +299228 +299229 +299230 +299231 +299232 +299233 +299234 +299235 +299236 +299237 +299238 +299239 +299240 +299241 +299242 +299243 +299244 +299245 +299246 +299247 +299248 +299249 +299250 +299251 +299252 +299253 +299254 +299255 +299256 +299257 +299258 +299259 +299260 +299261 +299262 +299263 +299264 +299265 +299266 +299267 +299268 +299269 +299270 +299271 +299272 +299273 +299274 +299275 +299276 +299277 +299278 +299279 +299280 +299281 +299282 +299283 +299284 +299285 +299286 +299287 +299288 +299289 +299290 +299291 +299292 +299293 +299294 +299295 +299296 +299297 +299298 +299299 +299300 +299301 +299302 +299303 +299304 +299305 +299306 +299307 +299308 +299309 +299310 +299311 +299312 +299313 +299314 +299315 +299316 +299317 +299318 +299319 +299320 +299321 +299322 +299323 +299324 +299325 +299326 +299327 +299328 +299329 +299330 +299331 +299332 +299333 +299334 +299335 +299336 +299337 +299338 +299339 +299340 +299341 +299342 +299343 +299344 +299345 +299346 +299347 +299348 +299349 +299350 +299351 +299352 +299353 +299354 +299355 +299356 +299357 +299358 +299359 +299360 +299361 +299362 +299363 +299364 +299365 +299366 +299367 +299368 +299369 +299370 +299371 +299372 +299373 +299374 +299375 +299376 +299377 +299378 +299379 +299380 +299381 +299382 +299383 +299384 +299385 +299386 +299387 +299388 +299389 +299390 +299391 +299392 +299393 +299394 +299395 +299396 +299397 +299398 +299399 +299400 +299401 +299402 +299403 +299404 +299405 +299406 +299407 +299408 +299409 +299410 +299411 +299412 +299413 +299414 +299415 +299416 +299417 +299418 +299419 +299420 +299421 +299422 +299423 +299424 +299425 +299426 +299427 +299428 +299429 +299430 +299431 +299432 +299433 +299434 +299435 +299436 +299437 +299438 +299439 +299440 +299441 +299442 +299443 +299444 +299445 +299446 +299447 +299448 +299449 +299450 +299451 +299452 +299453 +299454 +299455 +299456 +299457 +299458 +299459 +299460 +299461 +299462 +299463 +299464 +299465 +299466 +299467 +299468 +299469 +299470 +299471 +299472 +299473 +299474 +299475 +299476 +299477 +299478 +299479 +299480 +299481 +299482 +299483 +299484 +299485 +299486 +299487 +299488 +299489 +299490 +299491 +299492 +299493 +299494 +299495 +299496 +299497 +299498 +299499 +299500 +299501 +299502 +299503 +299504 +299505 +299506 +299507 +299508 +299509 +299510 +299511 +299512 +299513 +299514 +299515 +299516 +299517 +299518 +299519 +299520 +299521 +299522 +299523 +299524 +299525 +299526 +299527 +299528 +299529 +299530 +299531 +299532 +299533 +299534 +299535 +299536 +299537 +299538 +299539 +299540 +299541 +299542 +299543 +299544 +299545 +299546 +299547 +299548 +299549 +299550 +299551 +299552 +299553 +299554 +299555 +299556 +299557 +299558 +299559 +299560 +299561 +299562 +299563 +299564 +299565 +299566 +299567 +299568 +299569 +299570 +299571 +299572 +299573 +299574 +299575 +299576 +299577 +299578 +299579 +299580 +299581 +299582 +299583 +299584 +299585 +299586 +299587 +299588 +299589 +299590 +299591 +299592 +299593 +299594 +299595 +299596 +299597 +299598 +299599 +299600 +299601 +299602 +299603 +299604 +299605 +299606 +299607 +299608 +299609 +299610 +299611 +299612 +299613 +299614 +299615 +299616 +299617 +299618 +299619 +299620 +299621 +299622 +299623 +299624 +299625 +299626 +299627 +299628 +299629 +299630 +299631 +299632 +299633 +299634 +299635 +299636 +299637 +299638 +299639 +299640 +299641 +299642 +299643 +299644 +299645 +299646 +299647 +299648 +299649 +299650 +299651 +299652 +299653 +299654 +299655 +299656 +299657 +299658 +299659 +299660 +299661 +299662 +299663 +299664 +299665 +299666 +299667 +299668 +299669 +299670 +299671 +299672 +299673 +299674 +299675 +299676 +299677 +299678 +299679 +299680 +299681 +299682 +299683 +299684 +299685 +299686 +299687 +299688 +299689 +299690 +299691 +299692 +299693 +299694 +299695 +299696 +299697 +299698 +299699 +299700 +299701 +299702 +299703 +299704 +299705 +299706 +299707 +299708 +299709 +299710 +299711 +299712 +299713 +299714 +299715 +299716 +299717 +299718 +299719 +299720 +299721 +299722 +299723 +299724 +299725 +299726 +299727 +299728 +299729 +299730 +299731 +299732 +299733 +299734 +299735 +299736 +299737 +299738 +299739 +299740 +299741 +299742 +299743 +299744 +299745 +299746 +299747 +299748 +299749 +299750 +299751 +299752 +299753 +299754 +299755 +299756 +299757 +299758 +299759 +299760 +299761 +299762 +299763 +299764 +299765 +299766 +299767 +299768 +299769 +299770 +299771 +299772 +299773 +299774 +299775 +299776 +299777 +299778 +299779 +299780 +299781 +299782 +299783 +299784 +299785 +299786 +299787 +299788 +299789 +299790 +299791 +299792 +299793 +299794 +299795 +299796 +299797 +299798 +299799 +299800 +299801 +299802 +299803 +299804 +299805 +299806 +299807 +299808 +299809 +299810 +299811 +299812 +299813 +299814 +299815 +299816 +299817 +299818 +299819 +299820 +299821 +299822 +299823 +299824 +299825 +299826 +299827 +299828 +299829 +299830 +299831 +299832 +299833 +299834 +299835 +299836 +299837 +299838 +299839 +299840 +299841 +299842 +299843 +299844 +299845 +299846 +299847 +299848 +299849 +299850 +299851 +299852 +299853 +299854 +299855 +299856 +299857 +299858 +299859 +299860 +299861 +299862 +299863 +299864 +299865 +299866 +299867 +299868 +299869 +299870 +299871 +299872 +299873 +299874 +299875 +299876 +299877 +299878 +299879 +299880 +299881 +299882 +299883 +299884 +299885 +299886 +299887 +299888 +299889 +299890 +299891 +299892 +299893 +299894 +299895 +299896 +299897 +299898 +299899 +299900 +299901 +299902 +299903 +299904 +299905 +299906 +299907 +299908 +299909 +299910 +299911 +299912 +299913 +299914 +299915 +299916 +299917 +299918 +299919 +299920 +299921 +299922 +299923 +299924 +299925 +299926 +299927 +299928 +299929 +299930 +299931 +299932 +299933 +299934 +299935 +299936 +299937 +299938 +299939 +299940 +299941 +299942 +299943 +299944 +299945 +299946 +299947 +299948 +299949 +299950 +299951 +299952 +299953 +299954 +299955 +299956 +299957 +299958 +299959 +299960 +299961 +299962 +299963 +299964 +299965 +299966 +299967 +299968 +299969 +299970 +299971 +299972 +299973 +299974 +299975 +299976 +299977 +299978 +299979 +299980 +299981 +299982 +299983 +299984 +299985 +299986 +299987 +299988 +299989 +299990 +299991 +299992 +299993 +299994 +299995 +299996 +299997 +299998 +299999 +300000 +300001 +300002 +300003 +300004 +300005 +300006 +300007 +300008 +300009 +300010 +300011 +300012 +300013 +300014 +300015 +300016 +300017 +300018 +300019 +300020 +300021 +300022 +300023 +300024 +300025 +300026 +300027 +300028 +300029 +300030 +300031 +300032 +300033 +300034 +300035 +300036 +300037 +300038 +300039 +300040 +300041 +300042 +300043 +300044 +300045 +300046 +300047 +300048 +300049 +300050 +300051 +300052 +300053 +300054 +300055 +300056 +300057 +300058 +300059 +300060 +300061 +300062 +300063 +300064 +300065 +300066 +300067 +300068 +300069 +300070 +300071 +300072 +300073 +300074 +300075 +300076 +300077 +300078 +300079 +300080 +300081 +300082 +300083 +300084 +300085 +300086 +300087 +300088 +300089 +300090 +300091 +300092 +300093 +300094 +300095 +300096 +300097 +300098 +300099 +300100 +300101 +300102 +300103 +300104 +300105 +300106 +300107 +300108 +300109 +300110 +300111 +300112 +300113 +300114 +300115 +300116 +300117 +300118 +300119 +300120 +300121 +300122 +300123 +300124 +300125 +300126 +300127 +300128 +300129 +300130 +300131 +300132 +300133 +300134 +300135 +300136 +300137 +300138 +300139 +300140 +300141 +300142 +300143 +300144 +300145 +300146 +300147 +300148 +300149 +300150 +300151 +300152 +300153 +300154 +300155 +300156 +300157 +300158 +300159 +300160 +300161 +300162 +300163 +300164 +300165 +300166 +300167 +300168 +300169 +300170 +300171 +300172 +300173 +300174 +300175 +300176 +300177 +300178 +300179 +300180 +300181 +300182 +300183 +300184 +300185 +300186 +300187 +300188 +300189 +300190 +300191 +300192 +300193 +300194 +300195 +300196 +300197 +300198 +300199 +300200 +300201 +300202 +300203 +300204 +300205 +300206 +300207 +300208 +300209 +300210 +300211 +300212 +300213 +300214 +300215 +300216 +300217 +300218 +300219 +300220 +300221 +300222 +300223 +300224 +300225 +300226 +300227 +300228 +300229 +300230 +300231 +300232 +300233 +300234 +300235 +300236 +300237 +300238 +300239 +300240 +300241 +300242 +300243 +300244 +300245 +300246 +300247 +300248 +300249 +300250 +300251 +300252 +300253 +300254 +300255 +300256 +300257 +300258 +300259 +300260 +300261 +300262 +300263 +300264 +300265 +300266 +300267 +300268 +300269 +300270 +300271 +300272 +300273 +300274 +300275 +300276 +300277 +300278 +300279 +300280 +300281 +300282 +300283 +300284 +300285 +300286 +300287 +300288 +300289 +300290 +300291 +300292 +300293 +300294 +300295 +300296 +300297 +300298 +300299 +300300 +300301 +300302 +300303 +300304 +300305 +300306 +300307 +300308 +300309 +300310 +300311 +300312 +300313 +300314 +300315 +300316 +300317 +300318 +300319 +300320 +300321 +300322 +300323 +300324 +300325 +300326 +300327 +300328 +300329 +300330 +300331 +300332 +300333 +300334 +300335 +300336 +300337 +300338 +300339 +300340 +300341 +300342 +300343 +300344 +300345 +300346 +300347 +300348 +300349 +300350 +300351 +300352 +300353 +300354 +300355 +300356 +300357 +300358 +300359 +300360 +300361 +300362 +300363 +300364 +300365 +300366 +300367 +300368 +300369 +300370 +300371 +300372 +300373 +300374 +300375 +300376 +300377 +300378 +300379 +300380 +300381 +300382 +300383 +300384 +300385 +300386 +300387 +300388 +300389 +300390 +300391 +300392 +300393 +300394 +300395 +300396 +300397 +300398 +300399 +300400 +300401 +300402 +300403 +300404 +300405 +300406 +300407 +300408 +300409 +300410 +300411 +300412 +300413 +300414 +300415 +300416 +300417 +300418 +300419 +300420 +300421 +300422 +300423 +300424 +300425 +300426 +300427 +300428 +300429 +300430 +300431 +300432 +300433 +300434 +300435 +300436 +300437 +300438 +300439 +300440 +300441 +300442 +300443 +300444 +300445 +300446 +300447 +300448 +300449 +300450 +300451 +300452 +300453 +300454 +300455 +300456 +300457 +300458 +300459 +300460 +300461 +300462 +300463 +300464 +300465 +300466 +300467 +300468 +300469 +300470 +300471 +300472 +300473 +300474 +300475 +300476 +300477 +300478 +300479 +300480 +300481 +300482 +300483 +300484 +300485 +300486 +300487 +300488 +300489 +300490 +300491 +300492 +300493 +300494 +300495 +300496 +300497 +300498 +300499 +300500 +300501 +300502 +300503 +300504 +300505 +300506 +300507 +300508 +300509 +300510 +300511 +300512 +300513 +300514 +300515 +300516 +300517 +300518 +300519 +300520 +300521 +300522 +300523 +300524 +300525 +300526 +300527 +300528 +300529 +300530 +300531 +300532 +300533 +300534 +300535 +300536 +300537 +300538 +300539 +300540 +300541 +300542 +300543 +300544 +300545 +300546 +300547 +300548 +300549 +300550 +300551 +300552 +300553 +300554 +300555 +300556 +300557 +300558 +300559 +300560 +300561 +300562 +300563 +300564 +300565 +300566 +300567 +300568 +300569 +300570 +300571 +300572 +300573 +300574 +300575 +300576 +300577 +300578 +300579 +300580 +300581 +300582 +300583 +300584 +300585 +300586 +300587 +300588 +300589 +300590 +300591 +300592 +300593 +300594 +300595 +300596 +300597 +300598 +300599 +300600 +300601 +300602 +300603 +300604 +300605 +300606 +300607 +300608 +300609 +300610 +300611 +300612 +300613 +300614 +300615 +300616 +300617 +300618 +300619 +300620 +300621 +300622 +300623 +300624 +300625 +300626 +300627 +300628 +300629 +300630 +300631 +300632 +300633 +300634 +300635 +300636 +300637 +300638 +300639 +300640 +300641 +300642 +300643 +300644 +300645 +300646 +300647 +300648 +300649 +300650 +300651 +300652 +300653 +300654 +300655 +300656 +300657 +300658 +300659 +300660 +300661 +300662 +300663 +300664 +300665 +300666 +300667 +300668 +300669 +300670 +300671 +300672 +300673 +300674 +300675 +300676 +300677 +300678 +300679 +300680 +300681 +300682 +300683 +300684 +300685 +300686 +300687 +300688 +300689 +300690 +300691 +300692 +300693 +300694 +300695 +300696 +300697 +300698 +300699 +300700 +300701 +300702 +300703 +300704 +300705 +300706 +300707 +300708 +300709 +300710 +300711 +300712 +300713 +300714 +300715 +300716 +300717 +300718 +300719 +300720 +300721 +300722 +300723 +300724 +300725 +300726 +300727 +300728 +300729 +300730 +300731 +300732 +300733 +300734 +300735 +300736 +300737 +300738 +300739 +300740 +300741 +300742 +300743 +300744 +300745 +300746 +300747 +300748 +300749 +300750 +300751 +300752 +300753 +300754 +300755 +300756 +300757 +300758 +300759 +300760 +300761 +300762 +300763 +300764 +300765 +300766 +300767 +300768 +300769 +300770 +300771 +300772 +300773 +300774 +300775 +300776 +300777 +300778 +300779 +300780 +300781 +300782 +300783 +300784 +300785 +300786 +300787 +300788 +300789 +300790 +300791 +300792 +300793 +300794 +300795 +300796 +300797 +300798 +300799 +300800 +300801 +300802 +300803 +300804 +300805 +300806 +300807 +300808 +300809 +300810 +300811 +300812 +300813 +300814 +300815 +300816 +300817 +300818 +300819 +300820 +300821 +300822 +300823 +300824 +300825 +300826 +300827 +300828 +300829 +300830 +300831 +300832 +300833 +300834 +300835 +300836 +300837 +300838 +300839 +300840 +300841 +300842 +300843 +300844 +300845 +300846 +300847 +300848 +300849 +300850 +300851 +300852 +300853 +300854 +300855 +300856 +300857 +300858 +300859 +300860 +300861 +300862 +300863 +300864 +300865 +300866 +300867 +300868 +300869 +300870 +300871 +300872 +300873 +300874 +300875 +300876 +300877 +300878 +300879 +300880 +300881 +300882 +300883 +300884 +300885 +300886 +300887 +300888 +300889 +300890 +300891 +300892 +300893 +300894 +300895 +300896 +300897 +300898 +300899 +300900 +300901 +300902 +300903 +300904 +300905 +300906 +300907 +300908 +300909 +300910 +300911 +300912 +300913 +300914 +300915 +300916 +300917 +300918 +300919 +300920 +300921 +300922 +300923 +300924 +300925 +300926 +300927 +300928 +300929 +300930 +300931 +300932 +300933 +300934 +300935 +300936 +300937 +300938 +300939 +300940 +300941 +300942 +300943 +300944 +300945 +300946 +300947 +300948 +300949 +300950 +300951 +300952 +300953 +300954 +300955 +300956 +300957 +300958 +300959 +300960 +300961 +300962 +300963 +300964 +300965 +300966 +300967 +300968 +300969 +300970 +300971 +300972 +300973 +300974 +300975 +300976 +300977 +300978 +300979 +300980 +300981 +300982 +300983 +300984 +300985 +300986 +300987 +300988 +300989 +300990 +300991 +300992 +300993 +300994 +300995 +300996 +300997 +300998 +300999 +301000 +301001 +301002 +301003 +301004 +301005 +301006 +301007 +301008 +301009 +301010 +301011 +301012 +301013 +301014 +301015 +301016 +301017 +301018 +301019 +301020 +301021 +301022 +301023 +301024 +301025 +301026 +301027 +301028 +301029 +301030 +301031 +301032 +301033 +301034 +301035 +301036 +301037 +301038 +301039 +301040 +301041 +301042 +301043 +301044 +301045 +301046 +301047 +301048 +301049 +301050 +301051 +301052 +301053 +301054 +301055 +301056 +301057 +301058 +301059 +301060 +301061 +301062 +301063 +301064 +301065 +301066 +301067 +301068 +301069 +301070 +301071 +301072 +301073 +301074 +301075 +301076 +301077 +301078 +301079 +301080 +301081 +301082 +301083 +301084 +301085 +301086 +301087 +301088 +301089 +301090 +301091 +301092 +301093 +301094 +301095 +301096 +301097 +301098 +301099 +301100 +301101 +301102 +301103 +301104 +301105 +301106 +301107 +301108 +301109 +301110 +301111 +301112 +301113 +301114 +301115 +301116 +301117 +301118 +301119 +301120 +301121 +301122 +301123 +301124 +301125 +301126 +301127 +301128 +301129 +301130 +301131 +301132 +301133 +301134 +301135 +301136 +301137 +301138 +301139 +301140 +301141 +301142 +301143 +301144 +301145 +301146 +301147 +301148 +301149 +301150 +301151 +301152 +301153 +301154 +301155 +301156 +301157 +301158 +301159 +301160 +301161 +301162 +301163 +301164 +301165 +301166 +301167 +301168 +301169 +301170 +301171 +301172 +301173 +301174 +301175 +301176 +301177 +301178 +301179 +301180 +301181 +301182 +301183 +301184 +301185 +301186 +301187 +301188 +301189 +301190 +301191 +301192 +301193 +301194 +301195 +301196 +301197 +301198 +301199 +301200 +301201 +301202 +301203 +301204 +301205 +301206 +301207 +301208 +301209 +301210 +301211 +301212 +301213 +301214 +301215 +301216 +301217 +301218 +301219 +301220 +301221 +301222 +301223 +301224 +301225 +301226 +301227 +301228 +301229 +301230 +301231 +301232 +301233 +301234 +301235 +301236 +301237 +301238 +301239 +301240 +301241 +301242 +301243 +301244 +301245 +301246 +301247 +301248 +301249 +301250 +301251 +301252 +301253 +301254 +301255 +301256 +301257 +301258 +301259 +301260 +301261 +301262 +301263 +301264 +301265 +301266 +301267 +301268 +301269 +301270 +301271 +301272 +301273 +301274 +301275 +301276 +301277 +301278 +301279 +301280 +301281 +301282 +301283 +301284 +301285 +301286 +301287 +301288 +301289 +301290 +301291 +301292 +301293 +301294 +301295 +301296 +301297 +301298 +301299 +301300 +301301 +301302 +301303 +301304 +301305 +301306 +301307 +301308 +301309 +301310 +301311 +301312 +301313 +301314 +301315 +301316 +301317 +301318 +301319 +301320 +301321 +301322 +301323 +301324 +301325 +301326 +301327 +301328 +301329 +301330 +301331 +301332 +301333 +301334 +301335 +301336 +301337 +301338 +301339 +301340 +301341 +301342 +301343 +301344 +301345 +301346 +301347 +301348 +301349 +301350 +301351 +301352 +301353 +301354 +301355 +301356 +301357 +301358 +301359 +301360 +301361 +301362 +301363 +301364 +301365 +301366 +301367 +301368 +301369 +301370 +301371 +301372 +301373 +301374 +301375 +301376 +301377 +301378 +301379 +301380 +301381 +301382 +301383 +301384 +301385 +301386 +301387 +301388 +301389 +301390 +301391 +301392 +301393 +301394 +301395 +301396 +301397 +301398 +301399 +301400 +301401 +301402 +301403 +301404 +301405 +301406 +301407 +301408 +301409 +301410 +301411 +301412 +301413 +301414 +301415 +301416 +301417 +301418 +301419 +301420 +301421 +301422 +301423 +301424 +301425 +301426 +301427 +301428 +301429 +301430 +301431 +301432 +301433 +301434 +301435 +301436 +301437 +301438 +301439 +301440 +301441 +301442 +301443 +301444 +301445 +301446 +301447 +301448 +301449 +301450 +301451 +301452 +301453 +301454 +301455 +301456 +301457 +301458 +301459 +301460 +301461 +301462 +301463 +301464 +301465 +301466 +301467 +301468 +301469 +301470 +301471 +301472 +301473 +301474 +301475 +301476 +301477 +301478 +301479 +301480 +301481 +301482 +301483 +301484 +301485 +301486 +301487 +301488 +301489 +301490 +301491 +301492 +301493 +301494 +301495 +301496 +301497 +301498 +301499 +301500 +301501 +301502 +301503 +301504 +301505 +301506 +301507 +301508 +301509 +301510 +301511 +301512 +301513 +301514 +301515 +301516 +301517 +301518 +301519 +301520 +301521 +301522 +301523 +301524 +301525 +301526 +301527 +301528 +301529 +301530 +301531 +301532 +301533 +301534 +301535 +301536 +301537 +301538 +301539 +301540 +301541 +301542 +301543 +301544 +301545 +301546 +301547 +301548 +301549 +301550 +301551 +301552 +301553 +301554 +301555 +301556 +301557 +301558 +301559 +301560 +301561 +301562 +301563 +301564 +301565 +301566 +301567 +301568 +301569 +301570 +301571 +301572 +301573 +301574 +301575 +301576 +301577 +301578 +301579 +301580 +301581 +301582 +301583 +301584 +301585 +301586 +301587 +301588 +301589 +301590 +301591 +301592 +301593 +301594 +301595 +301596 +301597 +301598 +301599 +301600 +301601 +301602 +301603 +301604 +301605 +301606 +301607 +301608 +301609 +301610 +301611 +301612 +301613 +301614 +301615 +301616 +301617 +301618 +301619 +301620 +301621 +301622 +301623 +301624 +301625 +301626 +301627 +301628 +301629 +301630 +301631 +301632 +301633 +301634 +301635 +301636 +301637 +301638 +301639 +301640 +301641 +301642 +301643 +301644 +301645 +301646 +301647 +301648 +301649 +301650 +301651 +301652 +301653 +301654 +301655 +301656 +301657 +301658 +301659 +301660 +301661 +301662 +301663 +301664 +301665 +301666 +301667 +301668 +301669 +301670 +301671 +301672 +301673 +301674 +301675 +301676 +301677 +301678 +301679 +301680 +301681 +301682 +301683 +301684 +301685 +301686 +301687 +301688 +301689 +301690 +301691 +301692 +301693 +301694 +301695 +301696 +301697 +301698 +301699 +301700 +301701 +301702 +301703 +301704 +301705 +301706 +301707 +301708 +301709 +301710 +301711 +301712 +301713 +301714 +301715 +301716 +301717 +301718 +301719 +301720 +301721 +301722 +301723 +301724 +301725 +301726 +301727 +301728 +301729 +301730 +301731 +301732 +301733 +301734 +301735 +301736 +301737 +301738 +301739 +301740 +301741 +301742 +301743 +301744 +301745 +301746 +301747 +301748 +301749 +301750 +301751 +301752 +301753 +301754 +301755 +301756 +301757 +301758 +301759 +301760 +301761 +301762 +301763 +301764 +301765 +301766 +301767 +301768 +301769 +301770 +301771 +301772 +301773 +301774 +301775 +301776 +301777 +301778 +301779 +301780 +301781 +301782 +301783 +301784 +301785 +301786 +301787 +301788 +301789 +301790 +301791 +301792 +301793 +301794 +301795 +301796 +301797 +301798 +301799 +301800 +301801 +301802 +301803 +301804 +301805 +301806 +301807 +301808 +301809 +301810 +301811 +301812 +301813 +301814 +301815 +301816 +301817 +301818 +301819 +301820 +301821 +301822 +301823 +301824 +301825 +301826 +301827 +301828 +301829 +301830 +301831 +301832 +301833 +301834 +301835 +301836 +301837 +301838 +301839 +301840 +301841 +301842 +301843 +301844 +301845 +301846 +301847 +301848 +301849 +301850 +301851 +301852 +301853 +301854 +301855 +301856 +301857 +301858 +301859 +301860 +301861 +301862 +301863 +301864 +301865 +301866 +301867 +301868 +301869 +301870 +301871 +301872 +301873 +301874 +301875 +301876 +301877 +301878 +301879 +301880 +301881 +301882 +301883 +301884 +301885 +301886 +301887 +301888 +301889 +301890 +301891 +301892 +301893 +301894 +301895 +301896 +301897 +301898 +301899 +301900 +301901 +301902 +301903 +301904 +301905 +301906 +301907 +301908 +301909 +301910 +301911 +301912 +301913 +301914 +301915 +301916 +301917 +301918 +301919 +301920 +301921 +301922 +301923 +301924 +301925 +301926 +301927 +301928 +301929 +301930 +301931 +301932 +301933 +301934 +301935 +301936 +301937 +301938 +301939 +301940 +301941 +301942 +301943 +301944 +301945 +301946 +301947 +301948 +301949 +301950 +301951 +301952 +301953 +301954 +301955 +301956 +301957 +301958 +301959 +301960 +301961 +301962 +301963 +301964 +301965 +301966 +301967 +301968 +301969 +301970 +301971 +301972 +301973 +301974 +301975 +301976 +301977 +301978 +301979 +301980 +301981 +301982 +301983 +301984 +301985 +301986 +301987 +301988 +301989 +301990 +301991 +301992 +301993 +301994 +301995 +301996 +301997 +301998 +301999 +302000 +302001 +302002 +302003 +302004 +302005 +302006 +302007 +302008 +302009 +302010 +302011 +302012 +302013 +302014 +302015 +302016 +302017 +302018 +302019 +302020 +302021 +302022 +302023 +302024 +302025 +302026 +302027 +302028 +302029 +302030 +302031 +302032 +302033 +302034 +302035 +302036 +302037 +302038 +302039 +302040 +302041 +302042 +302043 +302044 +302045 +302046 +302047 +302048 +302049 +302050 +302051 +302052 +302053 +302054 +302055 +302056 +302057 +302058 +302059 +302060 +302061 +302062 +302063 +302064 +302065 +302066 +302067 +302068 +302069 +302070 +302071 +302072 +302073 +302074 +302075 +302076 +302077 +302078 +302079 +302080 +302081 +302082 +302083 +302084 +302085 +302086 +302087 +302088 +302089 +302090 +302091 +302092 +302093 +302094 +302095 +302096 +302097 +302098 +302099 +302100 +302101 +302102 +302103 +302104 +302105 +302106 +302107 +302108 +302109 +302110 +302111 +302112 +302113 +302114 +302115 +302116 +302117 +302118 +302119 +302120 +302121 +302122 +302123 +302124 +302125 +302126 +302127 +302128 +302129 +302130 +302131 +302132 +302133 +302134 +302135 +302136 +302137 +302138 +302139 +302140 +302141 +302142 +302143 +302144 +302145 +302146 +302147 +302148 +302149 +302150 +302151 +302152 +302153 +302154 +302155 +302156 +302157 +302158 +302159 +302160 +302161 +302162 +302163 +302164 +302165 +302166 +302167 +302168 +302169 +302170 +302171 +302172 +302173 +302174 +302175 +302176 +302177 +302178 +302179 +302180 +302181 +302182 +302183 +302184 +302185 +302186 +302187 +302188 +302189 +302190 +302191 +302192 +302193 +302194 +302195 +302196 +302197 +302198 +302199 +302200 +302201 +302202 +302203 +302204 +302205 +302206 +302207 +302208 +302209 +302210 +302211 +302212 +302213 +302214 +302215 +302216 +302217 +302218 +302219 +302220 +302221 +302222 +302223 +302224 +302225 +302226 +302227 +302228 +302229 +302230 +302231 +302232 +302233 +302234 +302235 +302236 +302237 +302238 +302239 +302240 +302241 +302242 +302243 +302244 +302245 +302246 +302247 +302248 +302249 +302250 +302251 +302252 +302253 +302254 +302255 +302256 +302257 +302258 +302259 +302260 +302261 +302262 +302263 +302264 +302265 +302266 +302267 +302268 +302269 +302270 +302271 +302272 +302273 +302274 +302275 +302276 +302277 +302278 +302279 +302280 +302281 +302282 +302283 +302284 +302285 +302286 +302287 +302288 +302289 +302290 +302291 +302292 +302293 +302294 +302295 +302296 +302297 +302298 +302299 +302300 +302301 +302302 +302303 +302304 +302305 +302306 +302307 +302308 +302309 +302310 +302311 +302312 +302313 +302314 +302315 +302316 +302317 +302318 +302319 +302320 +302321 +302322 +302323 +302324 +302325 +302326 +302327 +302328 +302329 +302330 +302331 +302332 +302333 +302334 +302335 +302336 +302337 +302338 +302339 +302340 +302341 +302342 +302343 +302344 +302345 +302346 +302347 +302348 +302349 +302350 +302351 +302352 +302353 +302354 +302355 +302356 +302357 +302358 +302359 +302360 +302361 +302362 +302363 +302364 +302365 +302366 +302367 +302368 +302369 +302370 +302371 +302372 +302373 +302374 +302375 +302376 +302377 +302378 +302379 +302380 +302381 +302382 +302383 +302384 +302385 +302386 +302387 +302388 +302389 +302390 +302391 +302392 +302393 +302394 +302395 +302396 +302397 +302398 +302399 +302400 +302401 +302402 +302403 +302404 +302405 +302406 +302407 +302408 +302409 +302410 +302411 +302412 +302413 +302414 +302415 +302416 +302417 +302418 +302419 +302420 +302421 +302422 +302423 +302424 +302425 +302426 +302427 +302428 +302429 +302430 +302431 +302432 +302433 +302434 +302435 +302436 +302437 +302438 +302439 +302440 +302441 +302442 +302443 +302444 +302445 +302446 +302447 +302448 +302449 +302450 +302451 +302452 +302453 +302454 +302455 +302456 +302457 +302458 +302459 +302460 +302461 +302462 +302463 +302464 +302465 +302466 +302467 +302468 +302469 +302470 +302471 +302472 +302473 +302474 +302475 +302476 +302477 +302478 +302479 +302480 +302481 +302482 +302483 +302484 +302485 +302486 +302487 +302488 +302489 +302490 +302491 +302492 +302493 +302494 +302495 +302496 +302497 +302498 +302499 +302500 +302501 +302502 +302503 +302504 +302505 +302506 +302507 +302508 +302509 +302510 +302511 +302512 +302513 +302514 +302515 +302516 +302517 +302518 +302519 +302520 +302521 +302522 +302523 +302524 +302525 +302526 +302527 +302528 +302529 +302530 +302531 +302532 +302533 +302534 +302535 +302536 +302537 +302538 +302539 +302540 +302541 +302542 +302543 +302544 +302545 +302546 +302547 +302548 +302549 +302550 +302551 +302552 +302553 +302554 +302555 +302556 +302557 +302558 +302559 +302560 +302561 +302562 +302563 +302564 +302565 +302566 +302567 +302568 +302569 +302570 +302571 +302572 +302573 +302574 +302575 +302576 +302577 +302578 +302579 +302580 +302581 +302582 +302583 +302584 +302585 +302586 +302587 +302588 +302589 +302590 +302591 +302592 +302593 +302594 +302595 +302596 +302597 +302598 +302599 +302600 +302601 +302602 +302603 +302604 +302605 +302606 +302607 +302608 +302609 +302610 +302611 +302612 +302613 +302614 +302615 +302616 +302617 +302618 +302619 +302620 +302621 +302622 +302623 +302624 +302625 +302626 +302627 +302628 +302629 +302630 +302631 +302632 +302633 +302634 +302635 +302636 +302637 +302638 +302639 +302640 +302641 +302642 +302643 +302644 +302645 +302646 +302647 +302648 +302649 +302650 +302651 +302652 +302653 +302654 +302655 +302656 +302657 +302658 +302659 +302660 +302661 +302662 +302663 +302664 +302665 +302666 +302667 +302668 +302669 +302670 +302671 +302672 +302673 +302674 +302675 +302676 +302677 +302678 +302679 +302680 +302681 +302682 +302683 +302684 +302685 +302686 +302687 +302688 +302689 +302690 +302691 +302692 +302693 +302694 +302695 +302696 +302697 +302698 +302699 +302700 +302701 +302702 +302703 +302704 +302705 +302706 +302707 +302708 +302709 +302710 +302711 +302712 +302713 +302714 +302715 +302716 +302717 +302718 +302719 +302720 +302721 +302722 +302723 +302724 +302725 +302726 +302727 +302728 +302729 +302730 +302731 +302732 +302733 +302734 +302735 +302736 +302737 +302738 +302739 +302740 +302741 +302742 +302743 +302744 +302745 +302746 +302747 +302748 +302749 +302750 +302751 +302752 +302753 +302754 +302755 +302756 +302757 +302758 +302759 +302760 +302761 +302762 +302763 +302764 +302765 +302766 +302767 +302768 +302769 +302770 +302771 +302772 +302773 +302774 +302775 +302776 +302777 +302778 +302779 +302780 +302781 +302782 +302783 +302784 +302785 +302786 +302787 +302788 +302789 +302790 +302791 +302792 +302793 +302794 +302795 +302796 +302797 +302798 +302799 +302800 +302801 +302802 +302803 +302804 +302805 +302806 +302807 +302808 +302809 +302810 +302811 +302812 +302813 +302814 +302815 +302816 +302817 +302818 +302819 +302820 +302821 +302822 +302823 +302824 +302825 +302826 +302827 +302828 +302829 +302830 +302831 +302832 +302833 +302834 +302835 +302836 +302837 +302838 +302839 +302840 +302841 +302842 +302843 +302844 +302845 +302846 +302847 +302848 +302849 +302850 +302851 +302852 +302853 +302854 +302855 +302856 +302857 +302858 +302859 +302860 +302861 +302862 +302863 +302864 +302865 +302866 +302867 +302868 +302869 +302870 +302871 +302872 +302873 +302874 +302875 +302876 +302877 +302878 +302879 +302880 +302881 +302882 +302883 +302884 +302885 +302886 +302887 +302888 +302889 +302890 +302891 +302892 +302893 +302894 +302895 +302896 +302897 +302898 +302899 +302900 +302901 +302902 +302903 +302904 +302905 +302906 +302907 +302908 +302909 +302910 +302911 +302912 +302913 +302914 +302915 +302916 +302917 +302918 +302919 +302920 +302921 +302922 +302923 +302924 +302925 +302926 +302927 +302928 +302929 +302930 +302931 +302932 +302933 +302934 +302935 +302936 +302937 +302938 +302939 +302940 +302941 +302942 +302943 +302944 +302945 +302946 +302947 +302948 +302949 +302950 +302951 +302952 +302953 +302954 +302955 +302956 +302957 +302958 +302959 +302960 +302961 +302962 +302963 +302964 +302965 +302966 +302967 +302968 +302969 +302970 +302971 +302972 +302973 +302974 +302975 +302976 +302977 +302978 +302979 +302980 +302981 +302982 +302983 +302984 +302985 +302986 +302987 +302988 +302989 +302990 +302991 +302992 +302993 +302994 +302995 +302996 +302997 +302998 +302999 +303000 +303001 +303002 +303003 +303004 +303005 +303006 +303007 +303008 +303009 +303010 +303011 +303012 +303013 +303014 +303015 +303016 +303017 +303018 +303019 +303020 +303021 +303022 +303023 +303024 +303025 +303026 +303027 +303028 +303029 +303030 +303031 +303032 +303033 +303034 +303035 +303036 +303037 +303038 +303039 +303040 +303041 +303042 +303043 +303044 +303045 +303046 +303047 +303048 +303049 +303050 +303051 +303052 +303053 +303054 +303055 +303056 +303057 +303058 +303059 +303060 +303061 +303062 +303063 +303064 +303065 +303066 +303067 +303068 +303069 +303070 +303071 +303072 +303073 +303074 +303075 +303076 +303077 +303078 +303079 +303080 +303081 +303082 +303083 +303084 +303085 +303086 +303087 +303088 +303089 +303090 +303091 +303092 +303093 +303094 +303095 +303096 +303097 +303098 +303099 +303100 +303101 +303102 +303103 +303104 +303105 +303106 +303107 +303108 +303109 +303110 +303111 +303112 +303113 +303114 +303115 +303116 +303117 +303118 +303119 +303120 +303121 +303122 +303123 +303124 +303125 +303126 +303127 +303128 +303129 +303130 +303131 +303132 +303133 +303134 +303135 +303136 +303137 +303138 +303139 +303140 +303141 +303142 +303143 +303144 +303145 +303146 +303147 +303148 +303149 +303150 +303151 +303152 +303153 +303154 +303155 +303156 +303157 +303158 +303159 +303160 +303161 +303162 +303163 +303164 +303165 +303166 +303167 +303168 +303169 +303170 +303171 +303172 +303173 +303174 +303175 +303176 +303177 +303178 +303179 +303180 +303181 +303182 +303183 +303184 +303185 +303186 +303187 +303188 +303189 +303190 +303191 +303192 +303193 +303194 +303195 +303196 +303197 +303198 +303199 +303200 +303201 +303202 +303203 +303204 +303205 +303206 +303207 +303208 +303209 +303210 +303211 +303212 +303213 +303214 +303215 +303216 +303217 +303218 +303219 +303220 +303221 +303222 +303223 +303224 +303225 +303226 +303227 +303228 +303229 +303230 +303231 +303232 +303233 +303234 +303235 +303236 +303237 +303238 +303239 +303240 +303241 +303242 +303243 +303244 +303245 +303246 +303247 +303248 +303249 +303250 +303251 +303252 +303253 +303254 +303255 +303256 +303257 +303258 +303259 +303260 +303261 +303262 +303263 +303264 +303265 +303266 +303267 +303268 +303269 +303270 +303271 +303272 +303273 +303274 +303275 +303276 +303277 +303278 +303279 +303280 +303281 +303282 +303283 +303284 +303285 +303286 +303287 +303288 +303289 +303290 +303291 +303292 +303293 +303294 +303295 +303296 +303297 +303298 +303299 +303300 +303301 +303302 +303303 +303304 +303305 +303306 +303307 +303308 +303309 +303310 +303311 +303312 +303313 +303314 +303315 +303316 +303317 +303318 +303319 +303320 +303321 +303322 +303323 +303324 +303325 +303326 +303327 +303328 +303329 +303330 +303331 +303332 +303333 +303334 +303335 +303336 +303337 +303338 +303339 +303340 +303341 +303342 +303343 +303344 +303345 +303346 +303347 +303348 +303349 +303350 +303351 +303352 +303353 +303354 +303355 +303356 +303357 +303358 +303359 +303360 +303361 +303362 +303363 +303364 +303365 +303366 +303367 +303368 +303369 +303370 +303371 +303372 +303373 +303374 +303375 +303376 +303377 +303378 +303379 +303380 +303381 +303382 +303383 +303384 +303385 +303386 +303387 +303388 +303389 +303390 +303391 +303392 +303393 +303394 +303395 +303396 +303397 +303398 +303399 +303400 +303401 +303402 +303403 +303404 +303405 +303406 +303407 +303408 +303409 +303410 +303411 +303412 +303413 +303414 +303415 +303416 +303417 +303418 +303419 +303420 +303421 +303422 +303423 +303424 +303425 +303426 +303427 +303428 +303429 +303430 +303431 +303432 +303433 +303434 +303435 +303436 +303437 +303438 +303439 +303440 +303441 +303442 +303443 +303444 +303445 +303446 +303447 +303448 +303449 +303450 +303451 +303452 +303453 +303454 +303455 +303456 +303457 +303458 +303459 +303460 +303461 +303462 +303463 +303464 +303465 +303466 +303467 +303468 +303469 +303470 +303471 +303472 +303473 +303474 +303475 +303476 +303477 +303478 +303479 +303480 +303481 +303482 +303483 +303484 +303485 +303486 +303487 +303488 +303489 +303490 +303491 +303492 +303493 +303494 +303495 +303496 +303497 +303498 +303499 +303500 +303501 +303502 +303503 +303504 +303505 +303506 +303507 +303508 +303509 +303510 +303511 +303512 +303513 +303514 +303515 +303516 +303517 +303518 +303519 +303520 +303521 +303522 +303523 +303524 +303525 +303526 +303527 +303528 +303529 +303530 +303531 +303532 +303533 +303534 +303535 +303536 +303537 +303538 +303539 +303540 +303541 +303542 +303543 +303544 +303545 +303546 +303547 +303548 +303549 +303550 +303551 +303552 +303553 +303554 +303555 +303556 +303557 +303558 +303559 +303560 +303561 +303562 +303563 +303564 +303565 +303566 +303567 +303568 +303569 +303570 +303571 +303572 +303573 +303574 +303575 +303576 +303577 +303578 +303579 +303580 +303581 +303582 +303583 +303584 +303585 +303586 +303587 +303588 +303589 +303590 +303591 +303592 +303593 +303594 +303595 +303596 +303597 +303598 +303599 +303600 +303601 +303602 +303603 +303604 +303605 +303606 +303607 +303608 +303609 +303610 +303611 +303612 +303613 +303614 +303615 +303616 +303617 +303618 +303619 +303620 +303621 +303622 +303623 +303624 +303625 +303626 +303627 +303628 +303629 +303630 +303631 +303632 +303633 +303634 +303635 +303636 +303637 +303638 +303639 +303640 +303641 +303642 +303643 +303644 +303645 +303646 +303647 +303648 +303649 +303650 +303651 +303652 +303653 +303654 +303655 +303656 +303657 +303658 +303659 +303660 +303661 +303662 +303663 +303664 +303665 +303666 +303667 +303668 +303669 +303670 +303671 +303672 +303673 +303674 +303675 +303676 +303677 +303678 +303679 +303680 +303681 +303682 +303683 +303684 +303685 +303686 +303687 +303688 +303689 +303690 +303691 +303692 +303693 +303694 +303695 +303696 +303697 +303698 +303699 +303700 +303701 +303702 +303703 +303704 +303705 +303706 +303707 +303708 +303709 +303710 +303711 +303712 +303713 +303714 +303715 +303716 +303717 +303718 +303719 +303720 +303721 +303722 +303723 +303724 +303725 +303726 +303727 +303728 +303729 +303730 +303731 +303732 +303733 +303734 +303735 +303736 +303737 +303738 +303739 +303740 +303741 +303742 +303743 +303744 +303745 +303746 +303747 +303748 +303749 +303750 +303751 +303752 +303753 +303754 +303755 +303756 +303757 +303758 +303759 +303760 +303761 +303762 +303763 +303764 +303765 +303766 +303767 +303768 +303769 +303770 +303771 +303772 +303773 +303774 +303775 +303776 +303777 +303778 +303779 +303780 +303781 +303782 +303783 +303784 +303785 +303786 +303787 +303788 +303789 +303790 +303791 +303792 +303793 +303794 +303795 +303796 +303797 +303798 +303799 +303800 +303801 +303802 +303803 +303804 +303805 +303806 +303807 +303808 +303809 +303810 +303811 +303812 +303813 +303814 +303815 +303816 +303817 +303818 +303819 +303820 +303821 +303822 +303823 +303824 +303825 +303826 +303827 +303828 +303829 +303830 +303831 +303832 +303833 +303834 +303835 +303836 +303837 +303838 +303839 +303840 +303841 +303842 +303843 +303844 +303845 +303846 +303847 +303848 +303849 +303850 +303851 +303852 +303853 +303854 +303855 +303856 +303857 +303858 +303859 +303860 +303861 +303862 +303863 +303864 +303865 +303866 +303867 +303868 +303869 +303870 +303871 +303872 +303873 +303874 +303875 +303876 +303877 +303878 +303879 +303880 +303881 +303882 +303883 +303884 +303885 +303886 +303887 +303888 +303889 +303890 +303891 +303892 +303893 +303894 +303895 +303896 +303897 +303898 +303899 +303900 +303901 +303902 +303903 +303904 +303905 +303906 +303907 +303908 +303909 +303910 +303911 +303912 +303913 +303914 +303915 +303916 +303917 +303918 +303919 +303920 +303921 +303922 +303923 +303924 +303925 +303926 +303927 +303928 +303929 +303930 +303931 +303932 +303933 +303934 +303935 +303936 +303937 +303938 +303939 +303940 +303941 +303942 +303943 +303944 +303945 +303946 +303947 +303948 +303949 +303950 +303951 +303952 +303953 +303954 +303955 +303956 +303957 +303958 +303959 +303960 +303961 +303962 +303963 +303964 +303965 +303966 +303967 +303968 +303969 +303970 +303971 +303972 +303973 +303974 +303975 +303976 +303977 +303978 +303979 +303980 +303981 +303982 +303983 +303984 +303985 +303986 +303987 +303988 +303989 +303990 +303991 +303992 +303993 +303994 +303995 +303996 +303997 +303998 +303999 +304000 +304001 +304002 +304003 +304004 +304005 +304006 +304007 +304008 +304009 +304010 +304011 +304012 +304013 +304014 +304015 +304016 +304017 +304018 +304019 +304020 +304021 +304022 +304023 +304024 +304025 +304026 +304027 +304028 +304029 +304030 +304031 +304032 +304033 +304034 +304035 +304036 +304037 +304038 +304039 +304040 +304041 +304042 +304043 +304044 +304045 +304046 +304047 +304048 +304049 +304050 +304051 +304052 +304053 +304054 +304055 +304056 +304057 +304058 +304059 +304060 +304061 +304062 +304063 +304064 +304065 +304066 +304067 +304068 +304069 +304070 +304071 +304072 +304073 +304074 +304075 +304076 +304077 +304078 +304079 +304080 +304081 +304082 +304083 +304084 +304085 +304086 +304087 +304088 +304089 +304090 +304091 +304092 +304093 +304094 +304095 +304096 +304097 +304098 +304099 +304100 +304101 +304102 +304103 +304104 +304105 +304106 +304107 +304108 +304109 +304110 +304111 +304112 +304113 +304114 +304115 +304116 +304117 +304118 +304119 +304120 +304121 +304122 +304123 +304124 +304125 +304126 +304127 +304128 +304129 +304130 +304131 +304132 +304133 +304134 +304135 +304136 +304137 +304138 +304139 +304140 +304141 +304142 +304143 +304144 +304145 +304146 +304147 +304148 +304149 +304150 +304151 +304152 +304153 +304154 +304155 +304156 +304157 +304158 +304159 +304160 +304161 +304162 +304163 +304164 +304165 +304166 +304167 +304168 +304169 +304170 +304171 +304172 +304173 +304174 +304175 +304176 +304177 +304178 +304179 +304180 +304181 +304182 +304183 +304184 +304185 +304186 +304187 +304188 +304189 +304190 +304191 +304192 +304193 +304194 +304195 +304196 +304197 +304198 +304199 +304200 +304201 +304202 +304203 +304204 +304205 +304206 +304207 +304208 +304209 +304210 +304211 +304212 +304213 +304214 +304215 +304216 +304217 +304218 +304219 +304220 +304221 +304222 +304223 +304224 +304225 +304226 +304227 +304228 +304229 +304230 +304231 +304232 +304233 +304234 +304235 +304236 +304237 +304238 +304239 +304240 +304241 +304242 +304243 +304244 +304245 +304246 +304247 +304248 +304249 +304250 +304251 +304252 +304253 +304254 +304255 +304256 +304257 +304258 +304259 +304260 +304261 +304262 +304263 +304264 +304265 +304266 +304267 +304268 +304269 +304270 +304271 +304272 +304273 +304274 +304275 +304276 +304277 +304278 +304279 +304280 +304281 +304282 +304283 +304284 +304285 +304286 +304287 +304288 +304289 +304290 +304291 +304292 +304293 +304294 +304295 +304296 +304297 +304298 +304299 +304300 +304301 +304302 +304303 +304304 +304305 +304306 +304307 +304308 +304309 +304310 +304311 +304312 +304313 +304314 +304315 +304316 +304317 +304318 +304319 +304320 +304321 +304322 +304323 +304324 +304325 +304326 +304327 +304328 +304329 +304330 +304331 +304332 +304333 +304334 +304335 +304336 +304337 +304338 +304339 +304340 +304341 +304342 +304343 +304344 +304345 +304346 +304347 +304348 +304349 +304350 +304351 +304352 +304353 +304354 +304355 +304356 +304357 +304358 +304359 +304360 +304361 +304362 +304363 +304364 +304365 +304366 +304367 +304368 +304369 +304370 +304371 +304372 +304373 +304374 +304375 +304376 +304377 +304378 +304379 +304380 +304381 +304382 +304383 +304384 +304385 +304386 +304387 +304388 +304389 +304390 +304391 +304392 +304393 +304394 +304395 +304396 +304397 +304398 +304399 +304400 +304401 +304402 +304403 +304404 +304405 +304406 +304407 +304408 +304409 +304410 +304411 +304412 +304413 +304414 +304415 +304416 +304417 +304418 +304419 +304420 +304421 +304422 +304423 +304424 +304425 +304426 +304427 +304428 +304429 +304430 +304431 +304432 +304433 +304434 +304435 +304436 +304437 +304438 +304439 +304440 +304441 +304442 +304443 +304444 +304445 +304446 +304447 +304448 +304449 +304450 +304451 +304452 +304453 +304454 +304455 +304456 +304457 +304458 +304459 +304460 +304461 +304462 +304463 +304464 +304465 +304466 +304467 +304468 +304469 +304470 +304471 +304472 +304473 +304474 +304475 +304476 +304477 +304478 +304479 +304480 +304481 +304482 +304483 +304484 +304485 +304486 +304487 +304488 +304489 +304490 +304491 +304492 +304493 +304494 +304495 +304496 +304497 +304498 +304499 +304500 +304501 +304502 +304503 +304504 +304505 +304506 +304507 +304508 +304509 +304510 +304511 +304512 +304513 +304514 +304515 +304516 +304517 +304518 +304519 +304520 +304521 +304522 +304523 +304524 +304525 +304526 +304527 +304528 +304529 +304530 +304531 +304532 +304533 +304534 +304535 +304536 +304537 +304538 +304539 +304540 +304541 +304542 +304543 +304544 +304545 +304546 +304547 +304548 +304549 +304550 +304551 +304552 +304553 +304554 +304555 +304556 +304557 +304558 +304559 +304560 +304561 +304562 +304563 +304564 +304565 +304566 +304567 +304568 +304569 +304570 +304571 +304572 +304573 +304574 +304575 +304576 +304577 +304578 +304579 +304580 +304581 +304582 +304583 +304584 +304585 +304586 +304587 +304588 +304589 +304590 +304591 +304592 +304593 +304594 +304595 +304596 +304597 +304598 +304599 +304600 +304601 +304602 +304603 +304604 +304605 +304606 +304607 +304608 +304609 +304610 +304611 +304612 +304613 +304614 +304615 +304616 +304617 +304618 +304619 +304620 +304621 +304622 +304623 +304624 +304625 +304626 +304627 +304628 +304629 +304630 +304631 +304632 +304633 +304634 +304635 +304636 +304637 +304638 +304639 +304640 +304641 +304642 +304643 +304644 +304645 +304646 +304647 +304648 +304649 +304650 +304651 +304652 +304653 +304654 +304655 +304656 +304657 +304658 +304659 +304660 +304661 +304662 +304663 +304664 +304665 +304666 +304667 +304668 +304669 +304670 +304671 +304672 +304673 +304674 +304675 +304676 +304677 +304678 +304679 +304680 +304681 +304682 +304683 +304684 +304685 +304686 +304687 +304688 +304689 +304690 +304691 +304692 +304693 +304694 +304695 +304696 +304697 +304698 +304699 +304700 +304701 +304702 +304703 +304704 +304705 +304706 +304707 +304708 +304709 +304710 +304711 +304712 +304713 +304714 +304715 +304716 +304717 +304718 +304719 +304720 +304721 +304722 +304723 +304724 +304725 +304726 +304727 +304728 +304729 +304730 +304731 +304732 +304733 +304734 +304735 +304736 +304737 +304738 +304739 +304740 +304741 +304742 +304743 +304744 +304745 +304746 +304747 +304748 +304749 +304750 +304751 +304752 +304753 +304754 +304755 +304756 +304757 +304758 +304759 +304760 +304761 +304762 +304763 +304764 +304765 +304766 +304767 +304768 +304769 +304770 +304771 +304772 +304773 +304774 +304775 +304776 +304777 +304778 +304779 +304780 +304781 +304782 +304783 +304784 +304785 +304786 +304787 +304788 +304789 +304790 +304791 +304792 +304793 +304794 +304795 +304796 +304797 +304798 +304799 +304800 +304801 +304802 +304803 +304804 +304805 +304806 +304807 +304808 +304809 +304810 +304811 +304812 +304813 +304814 +304815 +304816 +304817 +304818 +304819 +304820 +304821 +304822 +304823 +304824 +304825 +304826 +304827 +304828 +304829 +304830 +304831 +304832 +304833 +304834 +304835 +304836 +304837 +304838 +304839 +304840 +304841 +304842 +304843 +304844 +304845 +304846 +304847 +304848 +304849 +304850 +304851 +304852 +304853 +304854 +304855 +304856 +304857 +304858 +304859 +304860 +304861 +304862 +304863 +304864 +304865 +304866 +304867 +304868 +304869 +304870 +304871 +304872 +304873 +304874 +304875 +304876 +304877 +304878 +304879 +304880 +304881 +304882 +304883 +304884 +304885 +304886 +304887 +304888 +304889 +304890 +304891 +304892 +304893 +304894 +304895 +304896 +304897 +304898 +304899 +304900 +304901 +304902 +304903 +304904 +304905 +304906 +304907 +304908 +304909 +304910 +304911 +304912 +304913 +304914 +304915 +304916 +304917 +304918 +304919 +304920 +304921 +304922 +304923 +304924 +304925 +304926 +304927 +304928 +304929 +304930 +304931 +304932 +304933 +304934 +304935 +304936 +304937 +304938 +304939 +304940 +304941 +304942 +304943 +304944 +304945 +304946 +304947 +304948 +304949 +304950 +304951 +304952 +304953 +304954 +304955 +304956 +304957 +304958 +304959 +304960 +304961 +304962 +304963 +304964 +304965 +304966 +304967 +304968 +304969 +304970 +304971 +304972 +304973 +304974 +304975 +304976 +304977 +304978 +304979 +304980 +304981 +304982 +304983 +304984 +304985 +304986 +304987 +304988 +304989 +304990 +304991 +304992 +304993 +304994 +304995 +304996 +304997 +304998 +304999 +305000 +305001 +305002 +305003 +305004 +305005 +305006 +305007 +305008 +305009 +305010 +305011 +305012 +305013 +305014 +305015 +305016 +305017 +305018 +305019 +305020 +305021 +305022 +305023 +305024 +305025 +305026 +305027 +305028 +305029 +305030 +305031 +305032 +305033 +305034 +305035 +305036 +305037 +305038 +305039 +305040 +305041 +305042 +305043 +305044 +305045 +305046 +305047 +305048 +305049 +305050 +305051 +305052 +305053 +305054 +305055 +305056 +305057 +305058 +305059 +305060 +305061 +305062 +305063 +305064 +305065 +305066 +305067 +305068 +305069 +305070 +305071 +305072 +305073 +305074 +305075 +305076 +305077 +305078 +305079 +305080 +305081 +305082 +305083 +305084 +305085 +305086 +305087 +305088 +305089 +305090 +305091 +305092 +305093 +305094 +305095 +305096 +305097 +305098 +305099 +305100 +305101 +305102 +305103 +305104 +305105 +305106 +305107 +305108 +305109 +305110 +305111 +305112 +305113 +305114 +305115 +305116 +305117 +305118 +305119 +305120 +305121 +305122 +305123 +305124 +305125 +305126 +305127 +305128 +305129 +305130 +305131 +305132 +305133 +305134 +305135 +305136 +305137 +305138 +305139 +305140 +305141 +305142 +305143 +305144 +305145 +305146 +305147 +305148 +305149 +305150 +305151 +305152 +305153 +305154 +305155 +305156 +305157 +305158 +305159 +305160 +305161 +305162 +305163 +305164 +305165 +305166 +305167 +305168 +305169 +305170 +305171 +305172 +305173 +305174 +305175 +305176 +305177 +305178 +305179 +305180 +305181 +305182 +305183 +305184 +305185 +305186 +305187 +305188 +305189 +305190 +305191 +305192 +305193 +305194 +305195 +305196 +305197 +305198 +305199 +305200 +305201 +305202 +305203 +305204 +305205 +305206 +305207 +305208 +305209 +305210 +305211 +305212 +305213 +305214 +305215 +305216 +305217 +305218 +305219 +305220 +305221 +305222 +305223 +305224 +305225 +305226 +305227 +305228 +305229 +305230 +305231 +305232 +305233 +305234 +305235 +305236 +305237 +305238 +305239 +305240 +305241 +305242 +305243 +305244 +305245 +305246 +305247 +305248 +305249 +305250 +305251 +305252 +305253 +305254 +305255 +305256 +305257 +305258 +305259 +305260 +305261 +305262 +305263 +305264 +305265 +305266 +305267 +305268 +305269 +305270 +305271 +305272 +305273 +305274 +305275 +305276 +305277 +305278 +305279 +305280 +305281 +305282 +305283 +305284 +305285 +305286 +305287 +305288 +305289 +305290 +305291 +305292 +305293 +305294 +305295 +305296 +305297 +305298 +305299 +305300 +305301 +305302 +305303 +305304 +305305 +305306 +305307 +305308 +305309 +305310 +305311 +305312 +305313 +305314 +305315 +305316 +305317 +305318 +305319 +305320 +305321 +305322 +305323 +305324 +305325 +305326 +305327 +305328 +305329 +305330 +305331 +305332 +305333 +305334 +305335 +305336 +305337 +305338 +305339 +305340 +305341 +305342 +305343 +305344 +305345 +305346 +305347 +305348 +305349 +305350 +305351 +305352 +305353 +305354 +305355 +305356 +305357 +305358 +305359 +305360 +305361 +305362 +305363 +305364 +305365 +305366 +305367 +305368 +305369 +305370 +305371 +305372 +305373 +305374 +305375 +305376 +305377 +305378 +305379 +305380 +305381 +305382 +305383 +305384 +305385 +305386 +305387 +305388 +305389 +305390 +305391 +305392 +305393 +305394 +305395 +305396 +305397 +305398 +305399 +305400 +305401 +305402 +305403 +305404 +305405 +305406 +305407 +305408 +305409 +305410 +305411 +305412 +305413 +305414 +305415 +305416 +305417 +305418 +305419 +305420 +305421 +305422 +305423 +305424 +305425 +305426 +305427 +305428 +305429 +305430 +305431 +305432 +305433 +305434 +305435 +305436 +305437 +305438 +305439 +305440 +305441 +305442 +305443 +305444 +305445 +305446 +305447 +305448 +305449 +305450 +305451 +305452 +305453 +305454 +305455 +305456 +305457 +305458 +305459 +305460 +305461 +305462 +305463 +305464 +305465 +305466 +305467 +305468 +305469 +305470 +305471 +305472 +305473 +305474 +305475 +305476 +305477 +305478 +305479 +305480 +305481 +305482 +305483 +305484 +305485 +305486 +305487 +305488 +305489 +305490 +305491 +305492 +305493 +305494 +305495 +305496 +305497 +305498 +305499 +305500 +305501 +305502 +305503 +305504 +305505 +305506 +305507 +305508 +305509 +305510 +305511 +305512 +305513 +305514 +305515 +305516 +305517 +305518 +305519 +305520 +305521 +305522 +305523 +305524 +305525 +305526 +305527 +305528 +305529 +305530 +305531 +305532 +305533 +305534 +305535 +305536 +305537 +305538 +305539 +305540 +305541 +305542 +305543 +305544 +305545 +305546 +305547 +305548 +305549 +305550 +305551 +305552 +305553 +305554 +305555 +305556 +305557 +305558 +305559 +305560 +305561 +305562 +305563 +305564 +305565 +305566 +305567 +305568 +305569 +305570 +305571 +305572 +305573 +305574 +305575 +305576 +305577 +305578 +305579 +305580 +305581 +305582 +305583 +305584 +305585 +305586 +305587 +305588 +305589 +305590 +305591 +305592 +305593 +305594 +305595 +305596 +305597 +305598 +305599 +305600 +305601 +305602 +305603 +305604 +305605 +305606 +305607 +305608 +305609 +305610 +305611 +305612 +305613 +305614 +305615 +305616 +305617 +305618 +305619 +305620 +305621 +305622 +305623 +305624 +305625 +305626 +305627 +305628 +305629 +305630 +305631 +305632 +305633 +305634 +305635 +305636 +305637 +305638 +305639 +305640 +305641 +305642 +305643 +305644 +305645 +305646 +305647 +305648 +305649 +305650 +305651 +305652 +305653 +305654 +305655 +305656 +305657 +305658 +305659 +305660 +305661 +305662 +305663 +305664 +305665 +305666 +305667 +305668 +305669 +305670 +305671 +305672 +305673 +305674 +305675 +305676 +305677 +305678 +305679 +305680 +305681 +305682 +305683 +305684 +305685 +305686 +305687 +305688 +305689 +305690 +305691 +305692 +305693 +305694 +305695 +305696 +305697 +305698 +305699 +305700 +305701 +305702 +305703 +305704 +305705 +305706 +305707 +305708 +305709 +305710 +305711 +305712 +305713 +305714 +305715 +305716 +305717 +305718 +305719 +305720 +305721 +305722 +305723 +305724 +305725 +305726 +305727 +305728 +305729 +305730 +305731 +305732 +305733 +305734 +305735 +305736 +305737 +305738 +305739 +305740 +305741 +305742 +305743 +305744 +305745 +305746 +305747 +305748 +305749 +305750 +305751 +305752 +305753 +305754 +305755 +305756 +305757 +305758 +305759 +305760 +305761 +305762 +305763 +305764 +305765 +305766 +305767 +305768 +305769 +305770 +305771 +305772 +305773 +305774 +305775 +305776 +305777 +305778 +305779 +305780 +305781 +305782 +305783 +305784 +305785 +305786 +305787 +305788 +305789 +305790 +305791 +305792 +305793 +305794 +305795 +305796 +305797 +305798 +305799 +305800 +305801 +305802 +305803 +305804 +305805 +305806 +305807 +305808 +305809 +305810 +305811 +305812 +305813 +305814 +305815 +305816 +305817 +305818 +305819 +305820 +305821 +305822 +305823 +305824 +305825 +305826 +305827 +305828 +305829 +305830 +305831 +305832 +305833 +305834 +305835 +305836 +305837 +305838 +305839 +305840 +305841 +305842 +305843 +305844 +305845 +305846 +305847 +305848 +305849 +305850 +305851 +305852 +305853 +305854 +305855 +305856 +305857 +305858 +305859 +305860 +305861 +305862 +305863 +305864 +305865 +305866 +305867 +305868 +305869 +305870 +305871 +305872 +305873 +305874 +305875 +305876 +305877 +305878 +305879 +305880 +305881 +305882 +305883 +305884 +305885 +305886 +305887 +305888 +305889 +305890 +305891 +305892 +305893 +305894 +305895 +305896 +305897 +305898 +305899 +305900 +305901 +305902 +305903 +305904 +305905 +305906 +305907 +305908 +305909 +305910 +305911 +305912 +305913 +305914 +305915 +305916 +305917 +305918 +305919 +305920 +305921 +305922 +305923 +305924 +305925 +305926 +305927 +305928 +305929 +305930 +305931 +305932 +305933 +305934 +305935 +305936 +305937 +305938 +305939 +305940 +305941 +305942 +305943 +305944 +305945 +305946 +305947 +305948 +305949 +305950 +305951 +305952 +305953 +305954 +305955 +305956 +305957 +305958 +305959 +305960 +305961 +305962 +305963 +305964 +305965 +305966 +305967 +305968 +305969 +305970 +305971 +305972 +305973 +305974 +305975 +305976 +305977 +305978 +305979 +305980 +305981 +305982 +305983 +305984 +305985 +305986 +305987 +305988 +305989 +305990 +305991 +305992 +305993 +305994 +305995 +305996 +305997 +305998 +305999 +306000 +306001 +306002 +306003 +306004 +306005 +306006 +306007 +306008 +306009 +306010 +306011 +306012 +306013 +306014 +306015 +306016 +306017 +306018 +306019 +306020 +306021 +306022 +306023 +306024 +306025 +306026 +306027 +306028 +306029 +306030 +306031 +306032 +306033 +306034 +306035 +306036 +306037 +306038 +306039 +306040 +306041 +306042 +306043 +306044 +306045 +306046 +306047 +306048 +306049 +306050 +306051 +306052 +306053 +306054 +306055 +306056 +306057 +306058 +306059 +306060 +306061 +306062 +306063 +306064 +306065 +306066 +306067 +306068 +306069 +306070 +306071 +306072 +306073 +306074 +306075 +306076 +306077 +306078 +306079 +306080 +306081 +306082 +306083 +306084 +306085 +306086 +306087 +306088 +306089 +306090 +306091 +306092 +306093 +306094 +306095 +306096 +306097 +306098 +306099 +306100 +306101 +306102 +306103 +306104 +306105 +306106 +306107 +306108 +306109 +306110 +306111 +306112 +306113 +306114 +306115 +306116 +306117 +306118 +306119 +306120 +306121 +306122 +306123 +306124 +306125 +306126 +306127 +306128 +306129 +306130 +306131 +306132 +306133 +306134 +306135 +306136 +306137 +306138 +306139 +306140 +306141 +306142 +306143 +306144 +306145 +306146 +306147 +306148 +306149 +306150 +306151 +306152 +306153 +306154 +306155 +306156 +306157 +306158 +306159 +306160 +306161 +306162 +306163 +306164 +306165 +306166 +306167 +306168 +306169 +306170 +306171 +306172 +306173 +306174 +306175 +306176 +306177 +306178 +306179 +306180 +306181 +306182 +306183 +306184 +306185 +306186 +306187 +306188 +306189 +306190 +306191 +306192 +306193 +306194 +306195 +306196 +306197 +306198 +306199 +306200 +306201 +306202 +306203 +306204 +306205 +306206 +306207 +306208 +306209 +306210 +306211 +306212 +306213 +306214 +306215 +306216 +306217 +306218 +306219 +306220 +306221 +306222 +306223 +306224 +306225 +306226 +306227 +306228 +306229 +306230 +306231 +306232 +306233 +306234 +306235 +306236 +306237 +306238 +306239 +306240 +306241 +306242 +306243 +306244 +306245 +306246 +306247 +306248 +306249 +306250 +306251 +306252 +306253 +306254 +306255 +306256 +306257 +306258 +306259 +306260 +306261 +306262 +306263 +306264 +306265 +306266 +306267 +306268 +306269 +306270 +306271 +306272 +306273 +306274 +306275 +306276 +306277 +306278 +306279 +306280 +306281 +306282 +306283 +306284 +306285 +306286 +306287 +306288 +306289 +306290 +306291 +306292 +306293 +306294 +306295 +306296 +306297 +306298 +306299 +306300 +306301 +306302 +306303 +306304 +306305 +306306 +306307 +306308 +306309 +306310 +306311 +306312 +306313 +306314 +306315 +306316 +306317 +306318 +306319 +306320 +306321 +306322 +306323 +306324 +306325 +306326 +306327 +306328 +306329 +306330 +306331 +306332 +306333 +306334 +306335 +306336 +306337 +306338 +306339 +306340 +306341 +306342 +306343 +306344 +306345 +306346 +306347 +306348 +306349 +306350 +306351 +306352 +306353 +306354 +306355 +306356 +306357 +306358 +306359 +306360 +306361 +306362 +306363 +306364 +306365 +306366 +306367 +306368 +306369 +306370 +306371 +306372 +306373 +306374 +306375 +306376 +306377 +306378 +306379 +306380 +306381 +306382 +306383 +306384 +306385 +306386 +306387 +306388 +306389 +306390 +306391 +306392 +306393 +306394 +306395 +306396 +306397 +306398 +306399 +306400 +306401 +306402 +306403 +306404 +306405 +306406 +306407 +306408 +306409 +306410 +306411 +306412 +306413 +306414 +306415 +306416 +306417 +306418 +306419 +306420 +306421 +306422 +306423 +306424 +306425 +306426 +306427 +306428 +306429 +306430 +306431 +306432 +306433 +306434 +306435 +306436 +306437 +306438 +306439 +306440 +306441 +306442 +306443 +306444 +306445 +306446 +306447 +306448 +306449 +306450 +306451 +306452 +306453 +306454 +306455 +306456 +306457 +306458 +306459 +306460 +306461 +306462 +306463 +306464 +306465 +306466 +306467 +306468 +306469 +306470 +306471 +306472 +306473 +306474 +306475 +306476 +306477 +306478 +306479 +306480 +306481 +306482 +306483 +306484 +306485 +306486 +306487 +306488 +306489 +306490 +306491 +306492 +306493 +306494 +306495 +306496 +306497 +306498 +306499 +306500 +306501 +306502 +306503 +306504 +306505 +306506 +306507 +306508 +306509 +306510 +306511 +306512 +306513 +306514 +306515 +306516 +306517 +306518 +306519 +306520 +306521 +306522 +306523 +306524 +306525 +306526 +306527 +306528 +306529 +306530 +306531 +306532 +306533 +306534 +306535 +306536 +306537 +306538 +306539 +306540 +306541 +306542 +306543 +306544 +306545 +306546 +306547 +306548 +306549 +306550 +306551 +306552 +306553 +306554 +306555 +306556 +306557 +306558 +306559 +306560 +306561 +306562 +306563 +306564 +306565 +306566 +306567 +306568 +306569 +306570 +306571 +306572 +306573 +306574 +306575 +306576 +306577 +306578 +306579 +306580 +306581 +306582 +306583 +306584 +306585 +306586 +306587 +306588 +306589 +306590 +306591 +306592 +306593 +306594 +306595 +306596 +306597 +306598 +306599 +306600 +306601 +306602 +306603 +306604 +306605 +306606 +306607 +306608 +306609 +306610 +306611 +306612 +306613 +306614 +306615 +306616 +306617 +306618 +306619 +306620 +306621 +306622 +306623 +306624 +306625 +306626 +306627 +306628 +306629 +306630 +306631 +306632 +306633 +306634 +306635 +306636 +306637 +306638 +306639 +306640 +306641 +306642 +306643 +306644 +306645 +306646 +306647 +306648 +306649 +306650 +306651 +306652 +306653 +306654 +306655 +306656 +306657 +306658 +306659 +306660 +306661 +306662 +306663 +306664 +306665 +306666 +306667 +306668 +306669 +306670 +306671 +306672 +306673 +306674 +306675 +306676 +306677 +306678 +306679 +306680 +306681 +306682 +306683 +306684 +306685 +306686 +306687 +306688 +306689 +306690 +306691 +306692 +306693 +306694 +306695 +306696 +306697 +306698 +306699 +306700 +306701 +306702 +306703 +306704 +306705 +306706 +306707 +306708 +306709 +306710 +306711 +306712 +306713 +306714 +306715 +306716 +306717 +306718 +306719 +306720 +306721 +306722 +306723 +306724 +306725 +306726 +306727 +306728 +306729 +306730 +306731 +306732 +306733 +306734 +306735 +306736 +306737 +306738 +306739 +306740 +306741 +306742 +306743 +306744 +306745 +306746 +306747 +306748 +306749 +306750 +306751 +306752 +306753 +306754 +306755 +306756 +306757 +306758 +306759 +306760 +306761 +306762 +306763 +306764 +306765 +306766 +306767 +306768 +306769 +306770 +306771 +306772 +306773 +306774 +306775 +306776 +306777 +306778 +306779 +306780 +306781 +306782 +306783 +306784 +306785 +306786 +306787 +306788 +306789 +306790 +306791 +306792 +306793 +306794 +306795 +306796 +306797 +306798 +306799 +306800 +306801 +306802 +306803 +306804 +306805 +306806 +306807 +306808 +306809 +306810 +306811 +306812 +306813 +306814 +306815 +306816 +306817 +306818 +306819 +306820 +306821 +306822 +306823 +306824 +306825 +306826 +306827 +306828 +306829 +306830 +306831 +306832 +306833 +306834 +306835 +306836 +306837 +306838 +306839 +306840 +306841 +306842 +306843 +306844 +306845 +306846 +306847 +306848 +306849 +306850 +306851 +306852 +306853 +306854 +306855 +306856 +306857 +306858 +306859 +306860 +306861 +306862 +306863 +306864 +306865 +306866 +306867 +306868 +306869 +306870 +306871 +306872 +306873 +306874 +306875 +306876 +306877 +306878 +306879 +306880 +306881 +306882 +306883 +306884 +306885 +306886 +306887 +306888 +306889 +306890 +306891 +306892 +306893 +306894 +306895 +306896 +306897 +306898 +306899 +306900 +306901 +306902 +306903 +306904 +306905 +306906 +306907 +306908 +306909 +306910 +306911 +306912 +306913 +306914 +306915 +306916 +306917 +306918 +306919 +306920 +306921 +306922 +306923 +306924 +306925 +306926 +306927 +306928 +306929 +306930 +306931 +306932 +306933 +306934 +306935 +306936 +306937 +306938 +306939 +306940 +306941 +306942 +306943 +306944 +306945 +306946 +306947 +306948 +306949 +306950 +306951 +306952 +306953 +306954 +306955 +306956 +306957 +306958 +306959 +306960 +306961 +306962 +306963 +306964 +306965 +306966 +306967 +306968 +306969 +306970 +306971 +306972 +306973 +306974 +306975 +306976 +306977 +306978 +306979 +306980 +306981 +306982 +306983 +306984 +306985 +306986 +306987 +306988 +306989 +306990 +306991 +306992 +306993 +306994 +306995 +306996 +306997 +306998 +306999 +307000 +307001 +307002 +307003 +307004 +307005 +307006 +307007 +307008 +307009 +307010 +307011 +307012 +307013 +307014 +307015 +307016 +307017 +307018 +307019 +307020 +307021 +307022 +307023 +307024 +307025 +307026 +307027 +307028 +307029 +307030 +307031 +307032 +307033 +307034 +307035 +307036 +307037 +307038 +307039 +307040 +307041 +307042 +307043 +307044 +307045 +307046 +307047 +307048 +307049 +307050 +307051 +307052 +307053 +307054 +307055 +307056 +307057 +307058 +307059 +307060 +307061 +307062 +307063 +307064 +307065 +307066 +307067 +307068 +307069 +307070 +307071 +307072 +307073 +307074 +307075 +307076 +307077 +307078 +307079 +307080 +307081 +307082 +307083 +307084 +307085 +307086 +307087 +307088 +307089 +307090 +307091 +307092 +307093 +307094 +307095 +307096 +307097 +307098 +307099 +307100 +307101 +307102 +307103 +307104 +307105 +307106 +307107 +307108 +307109 +307110 +307111 +307112 +307113 +307114 +307115 +307116 +307117 +307118 +307119 +307120 +307121 +307122 +307123 +307124 +307125 +307126 +307127 +307128 +307129 +307130 +307131 +307132 +307133 +307134 +307135 +307136 +307137 +307138 +307139 +307140 +307141 +307142 +307143 +307144 +307145 +307146 +307147 +307148 +307149 +307150 +307151 +307152 +307153 +307154 +307155 +307156 +307157 +307158 +307159 +307160 +307161 +307162 +307163 +307164 +307165 +307166 +307167 +307168 +307169 +307170 +307171 +307172 +307173 +307174 +307175 +307176 +307177 +307178 +307179 +307180 +307181 +307182 +307183 +307184 +307185 +307186 +307187 +307188 +307189 +307190 +307191 +307192 +307193 +307194 +307195 +307196 +307197 +307198 +307199 +307200 +307201 +307202 +307203 +307204 +307205 +307206 +307207 +307208 +307209 +307210 +307211 +307212 +307213 +307214 +307215 +307216 +307217 +307218 +307219 +307220 +307221 +307222 +307223 +307224 +307225 +307226 +307227 +307228 +307229 +307230 +307231 +307232 +307233 +307234 +307235 +307236 +307237 +307238 +307239 +307240 +307241 +307242 +307243 +307244 +307245 +307246 +307247 +307248 +307249 +307250 +307251 +307252 +307253 +307254 +307255 +307256 +307257 +307258 +307259 +307260 +307261 +307262 +307263 +307264 +307265 +307266 +307267 +307268 +307269 +307270 +307271 +307272 +307273 +307274 +307275 +307276 +307277 +307278 +307279 +307280 +307281 +307282 +307283 +307284 +307285 +307286 +307287 +307288 +307289 +307290 +307291 +307292 +307293 +307294 +307295 +307296 +307297 +307298 +307299 +307300 +307301 +307302 +307303 +307304 +307305 +307306 +307307 +307308 +307309 +307310 +307311 +307312 +307313 +307314 +307315 +307316 +307317 +307318 +307319 +307320 +307321 +307322 +307323 +307324 +307325 +307326 +307327 +307328 +307329 +307330 +307331 +307332 +307333 +307334 +307335 +307336 +307337
// auto-generated: "lalrpop 0.20.0"
-// sha3: cf05fc7c15175f61ddf0d42cd1128b2becdae5de960622ab8f351827aeb55218
+// sha3: d533a8d2113b01fb9dc84704d14d897a72b9198659078ae69a59195f62cfb764
 use crate::tokens::Token;
 use crate::lexer::LexicalError;
 use edlang_ast as ast;
@@ -295115,195 +307433,237 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 5, 0, -163, 0, 0, 0, -163, -163, -163, -163, -163, -163, 6, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 5, 0, -165, 0, 0, 0, -165, -165, -165, -165, -165, -165, 6, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 6
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 7
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 8
-        0, 0, 0, 59, 0, 0, 0, 0, 60, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 9
-        0, 65, -121, -121, 66, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 67, 68, 0, 69, 70, 71, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 72, -121, 0,
+        0, 71, -121, -121, 72, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 73, 74, 0, 75, 76, 77, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 78, -121, 0,
         // State 10
-        0, 0, 73, -111, 0, 0, -111, 74, -111, -111, -111, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 79, -111, 0, 0, -111, 80, -111, -111, -111, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 11
-        0, -164, -164, -164, -164, 23, -164, -164, -164, -164, -164, 0, 5, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 6, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 23, -166, -166, -166, -166, -166, 0, 5, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 6, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 12
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 13
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 24, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 24, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 14
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 15
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 16
-        0, 0, 0, 59, 0, 0, 0, 0, 60, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 17
-        0, -164, -164, -164, -164, 23, -164, -164, -164, -164, -164, 0, 5, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 6, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 23, -166, -166, -166, -166, -166, 0, 5, 0, -166, 0, 86, 0, -166, -166, 0, -166, -166, -166, 6, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 18
-        0, 0, 0, 59, 0, 0, 0, 0, 60, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 19
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 20
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 21
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 22
-        51, 0, 0, 14, 0, 15, -82, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, -82, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 23
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 24
-        0, 0, 0, 59, 0, 0, 83, 0, 60, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 90, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 26
-        0, 0, 73, -110, 0, 0, -110, 74, -110, -110, -110, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 79, -110, 0, 0, -110, 80, -110, -110, -110, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 27
-        0, 65, -120, -120, 66, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 67, 68, 0, 69, 70, 71, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 72, -120, 0,
+        0, 71, -120, -120, 72, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 73, 74, 0, 75, 76, 77, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 78, -120, 0,
         // State 28
-        51, 0, 0, 14, 0, 15, -84, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        56, 0, 0, 14, 0, 15, -84, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 29
-        0, 0, 0, 59, 0, 0, -81, 0, 60, 89, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, -81, 0, 66, 96, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 30
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 59, 0, 0, -83, 0, 60, 93, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 32
-        51, 0, 0, 14, 0, 15, 0, 16, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 38, 0, 0, 54, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 56,
+        0, 0, 0, 65, 0, 0, -83, 0, 66, 104, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 33
-        0, 0, 0, 59, 0, 0, 0, 0, 60, -190, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -190, 0,
+        0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        56, 0, 0, 14, 0, 15, 0, 16, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 43, 0, 0, 59, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 61,
         // State 36
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 37
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, -192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, -192, 0,
         // State 38
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 40
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 41
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 43
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 46
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 47
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 48
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 49
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 50
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 51
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 52
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 53
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 54
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 55
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 56
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 57
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 58
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 59
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 60
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 61
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
         // State 62
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 65
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 66
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 67
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 68
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 69
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 70
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 71
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 72
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 73
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 74
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 75
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 76
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 77
-        0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 78
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 79
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 80
-        0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 81
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 82
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 83
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 85
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 87
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 89
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 90
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 91
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
         // State 92
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        // State 95
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 103
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 105
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 106
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 107
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 108
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 109
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 110
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 111
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 112
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 113
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 114
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 115
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -295316,7 +307676,7 @@
         // State 2
         0,
         // State 3
-        -163,
+        -165,
         // State 4
         0,
         // State 5
@@ -295332,7 +307692,7 @@
         // State 10
         -111,
         // State 11
-        -164,
+        -166,
         // State 12
         0,
         // State 13
@@ -295344,7 +307704,7 @@
         // State 16
         -60,
         // State 17
-        -164,
+        -166,
         // State 18
         -61,
         // State 19
@@ -295378,65 +307738,65 @@
         // State 33
         0,
         // State 34
-        -213,
+        0,
         // State 35
         0,
         // State 36
         0,
         // State 37
-        -138,
+        0,
         // State 38
         0,
         // State 39
-        0,
+        -215,
         // State 40
-        -167,
+        0,
         // State 41
-        -168,
+        0,
         // State 42
-        -165,
+        -138,
         // State 43
-        -117,
+        0,
         // State 44
-        -119,
+        0,
         // State 45
-        -197,
+        -169,
         // State 46
-        -211,
+        -170,
         // State 47
-        -112,
+        -167,
         // State 48
-        -195,
+        -117,
         // State 49
-        -196,
+        -119,
         // State 50
-        0,
+        -199,
         // State 51
-        0,
+        -213,
         // State 52
-        -209,
+        -112,
         // State 53
-        -208,
+        -197,
         // State 54
-        -210,
+        -198,
         // State 55
         0,
         // State 56
-        -62,
+        0,
         // State 57
-        -63,
+        -211,
         // State 58
-        0,
+        -210,
         // State 59
-        0,
+        -212,
         // State 60
         0,
         // State 61
-        -166,
-        // State 62
         0,
+        // State 62
+        -62,
         // State 63
-        0,
+        -63,
         // State 64
         0,
         // State 65
@@ -295444,7 +307804,7 @@
         // State 66
         0,
         // State 67
-        0,
+        -168,
         // State 68
         0,
         // State 69
@@ -295460,37 +307820,37 @@
         // State 74
         0,
         // State 75
-        -116,
+        0,
         // State 76
-        -114,
+        0,
         // State 77
         0,
         // State 78
-        -115,
+        0,
         // State 79
-        -118,
+        0,
         // State 80
         0,
         // State 81
-        -113,
+        -116,
         // State 82
-        -194,
+        -114,
         // State 83
-        -198,
-        // State 84
         0,
+        // State 84
+        -115,
         // State 85
         0,
         // State 86
-        0,
+        -118,
         // State 87
-        -124,
-        // State 88
         0,
+        // State 88
+        -113,
         // State 89
-        0,
+        -196,
         // State 90
-        -189,
+        -200,
         // State 91
         0,
         // State 92
@@ -295498,36 +307858,84 @@
         // State 93
         0,
         // State 94
+        -124,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        -191,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
+        // State 105
+        0,
+        // State 106
+        0,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
+        // State 111
+        0,
+        // State 112
+        0,
+        // State 113
+        0,
+        // State 114
+        0,
+        // State 115
         0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             1 => 1,
             15 => 28,
-            30 => 30,
-            36 => 34,
+            30 => 31,
+            33 => 33,
+            36 => 39,
             37 => 20,
             38 => 21,
             39 => 19,
-            41 => 80,
-            45 => 84,
+            41 => 87,
+            45 => 91,
+            46 => match state {
+                36 => 112,
+                38 => 114,
+                _ => 96,
+            },
             49 => match state {
                 6 => 16,
                 7 => 18,
                 14 => 24,
                 22 => 29,
-                28 => 31,
-                32 => 33,
+                28 => 32,
+                35 => 37,
                 _ => 8,
             },
-            50 => 43,
+            50 => 48,
             51 => match state {
-                12 => 75,
-                13 => 76,
-                15 => 78,
-                20 => 79,
-                23 => 81,
-                _ => 44,
+                12 => 81,
+                13 => 82,
+                15 => 84,
+                20 => 86,
+                23 => 88,
+                _ => 49,
             },
             52 => match state {
                 21 => 27,
@@ -295537,38 +307945,46 @@
                 19 => 26,
                 _ => 10,
             },
-            55 => 45,
+            55 => 50,
             60 => match state {
                 0..=1 => 2,
-                6..=7 | 14 | 32 => 17,
-                4 => 42,
-                25 | 30 => 85,
+                6..=7 | 14 | 35 => 17,
+                4 => 47,
+                25 | 31 => 92,
+                30 | 33 | 36 | 38 => 97,
+                34 => 106,
                 _ => 11,
             },
-            71 => match state {
-                0 => 35,
-                1 => 38,
-                _ => 46,
-            },
+            62 => 61,
             72 => match state {
-                3 => 41,
-                _ => 40,
+                0 => 40,
+                1 => 43,
+                _ => 51,
             },
-            73 => 3,
-            82 => match state {
-                7 => 57,
-                14 => 77,
-                32 => 94,
-                _ => 56,
+            73 => match state {
+                3 => 46,
+                _ => 45,
             },
+            74 => 3,
+            76 => 34,
             83 => match state {
-                30 => 89,
-                _ => 86,
+                7 => 63,
+                14 => 83,
+                35 => 110,
+                _ => 62,
+            },
+            84 => match state {
+                31 => 100,
+                _ => 93,
+            },
+            86 => 52,
+            87 => 53,
+            88 => match state {
+                33 => 104,
+                _ => 98,
             },
-            85 => 47,
-            86 => 48,
-            89 => 12,
-            90 => 49,
+            90 => 12,
+            91 => 54,
             _ => 0,
         }
     }
@@ -296684,19 +309100,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -296708,37 +309124,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -296750,7 +309166,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -296762,7 +309178,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -296780,43 +309196,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -296834,19 +309250,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -296858,7 +309274,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -296870,7 +309286,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -296882,25 +309298,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -296913,108 +309329,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -297026,43 +309442,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -297074,14 +309490,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -297099,238 +309515,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
-            212 => __state_machine::SimulatedReduce::Accept,
-            213 => {
+            212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 93,
+                    nonterminal_produced: 91,
                 }
             }
-            214 => {
+            213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => __state_machine::SimulatedReduce::Accept,
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -298043,18 +310477,18 @@
                 __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             212 => {
-                // __AssignStmt = AssignStmt => ActionFn(9);
-                let __sym0 = __pop_Variant26(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action9::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             213 => {
                 __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             214 => {
-                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __AssignStmt = AssignStmt => ActionFn(10);
+                let __sym0 = __pop_Variant26(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action10::<>(__sym0);
+                return Some(Ok(__nt));
             }
             215 => {
                 __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -298158,6 +310592,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -298808,10 +311251,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -298822,11 +311265,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -298837,11 +311280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -298852,13 +311295,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -298869,11 +311312,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -298884,10 +311327,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -298898,11 +311341,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -298913,10 +311356,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -298927,11 +311370,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -298942,10 +311385,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -298956,13 +311399,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -298973,13 +311416,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -298990,10 +311433,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -299004,14 +311447,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -299022,14 +311465,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -299040,10 +311483,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -299054,13 +311497,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -299071,13 +311514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -299088,10 +311531,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -299102,14 +311545,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -299120,14 +311563,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -299138,10 +311581,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -299152,13 +311595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -299169,10 +311612,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -299183,11 +311626,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -299198,13 +311641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -299215,14 +311658,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -299233,13 +311676,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -299250,10 +311693,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -299264,11 +311707,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -299279,13 +311722,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -299296,14 +311739,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -299314,13 +311757,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -299331,10 +311774,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -299345,11 +311788,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -299360,13 +311803,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -299377,14 +311820,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -299395,13 +311838,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -299412,10 +311855,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -299426,11 +311869,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -299441,13 +311884,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -299458,14 +311901,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -299476,13 +311919,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -299493,10 +311936,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -299507,11 +311950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -299522,13 +311965,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -299539,14 +311982,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -299557,13 +312000,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -299574,10 +312017,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -299588,11 +312031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -299603,13 +312046,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -299620,14 +312063,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -299638,13 +312081,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -299655,10 +312098,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -299669,11 +312112,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -299684,13 +312127,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -299701,14 +312144,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -299719,10 +312162,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -299733,10 +312176,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -299747,14 +312190,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -299765,7 +312208,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -299773,7 +312216,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -299784,14 +312227,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -299802,7 +312245,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -299810,7 +312253,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -299821,11 +312264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299836,11 +312279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299851,11 +312294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299866,11 +312309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299881,11 +312324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299896,11 +312339,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299911,11 +312354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299926,11 +312369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -299941,11 +312384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -299956,11 +312399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -299971,11 +312414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -299986,11 +312429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -300001,11 +312444,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -300016,11 +312459,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -300031,11 +312474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -300046,11 +312489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -300061,14 +312504,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -300079,11 +312522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -300094,10 +312537,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -300108,13 +312551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -300125,11 +312568,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -300140,11 +312583,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -300155,10 +312598,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -300169,13 +312612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -300186,11 +312629,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -300201,11 +312644,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -300216,10 +312659,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -300230,13 +312673,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -300247,11 +312690,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -300262,11 +312705,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -300277,10 +312720,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -300291,13 +312734,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -300308,11 +312751,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -300323,11 +312766,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -300338,10 +312781,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -300352,13 +312795,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -300369,11 +312812,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -300384,11 +312827,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -300399,10 +312842,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -300413,13 +312856,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -300430,11 +312873,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -300445,7 +312888,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -300456,7 +312899,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -300467,11 +312910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -300482,10 +312925,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -300496,13 +312939,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -300513,11 +312956,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -300528,14 +312971,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -300546,11 +312989,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -300561,11 +313004,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -300576,14 +313019,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -300594,13 +313037,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -300611,13 +313054,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -300628,13 +313071,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -300645,11 +313088,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -300660,14 +313103,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -300678,11 +313121,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -300693,14 +313136,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -300711,11 +313154,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -300726,11 +313169,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -300741,10 +313184,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -300755,7 +313198,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -300763,7 +313206,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -300774,14 +313217,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -300792,11 +313235,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -300807,10 +313250,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -300821,7 +313264,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -300830,7 +313273,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -300841,7 +313284,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -300852,7 +313295,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -300863,7 +313306,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -300877,7 +313320,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -300888,7 +313331,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -300900,7 +313343,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -300911,7 +313354,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -300924,7 +313367,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -300935,7 +313378,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -300946,7 +313389,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -300957,7 +313400,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -300970,7 +313413,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -300981,7 +313424,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -300992,7 +313435,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -301003,7 +313446,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -301015,7 +313458,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -301026,7 +313469,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -301036,7 +313479,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -301047,11 +313490,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -301062,11 +313505,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -301077,10 +313520,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -301091,7 +313534,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -301100,36 +313578,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -301139,36 +313617,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -301179,18 +313657,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -301200,18 +313678,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -301222,18 +313700,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -301243,143 +313721,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -301389,18 +313867,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -301409,412 +313887,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -301826,18 +314304,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -301846,262 +314324,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -302110,18 +314588,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -302129,373 +314607,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -302508,264 +314986,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -302778,52 +315271,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__AssignStmt::AssignStmtParser;
@@ -302939,7 +315432,7 @@
         // State 0
         0,
         // State 1
-        -214,
+        -216,
         // State 2
         -65,
         // State 3
@@ -304075,19 +316568,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -304099,37 +316592,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -304141,7 +316634,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -304153,7 +316646,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -304171,43 +316664,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -304225,19 +316718,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -304249,7 +316742,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -304261,7 +316754,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -304273,25 +316766,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -304304,108 +316797,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -304417,43 +316910,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -304465,14 +316958,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -304490,238 +316983,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
+                    nonterminal_produced: 91,
+                }
+            }
+            213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
                     nonterminal_produced: 92,
                 }
             }
-            213 => __state_machine::SimulatedReduce::Accept,
             214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 94,
+                    nonterminal_produced: 93,
                 }
             }
-            215 => {
+            215 => __state_machine::SimulatedReduce::Accept,
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -305437,18 +317948,18 @@
                 __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             213 => {
-                // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
-                let __sym0 = __pop_Variant27(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action21::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             214 => {
                 __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             215 => {
-                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
+                let __sym0 = __pop_Variant27(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action22::<>(__sym0);
+                return Some(Ok(__nt));
             }
             216 => {
                 __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -305549,6 +318060,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -306199,10 +318719,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -306213,11 +318733,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -306228,11 +318748,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -306243,13 +318763,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -306260,11 +318780,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -306275,10 +318795,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -306289,11 +318809,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -306304,10 +318824,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -306318,11 +318838,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -306333,10 +318853,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -306347,13 +318867,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -306364,13 +318884,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -306381,10 +318901,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -306395,14 +318915,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -306413,14 +318933,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -306431,10 +318951,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -306445,13 +318965,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -306462,13 +318982,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -306479,10 +318999,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -306493,14 +319013,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -306511,14 +319031,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -306529,10 +319049,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -306543,13 +319063,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -306560,10 +319080,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -306574,11 +319094,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -306589,13 +319109,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -306606,14 +319126,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -306624,13 +319144,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -306641,10 +319161,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -306655,11 +319175,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -306670,13 +319190,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -306687,14 +319207,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -306705,13 +319225,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -306722,10 +319242,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -306736,11 +319256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -306751,13 +319271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -306768,14 +319288,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -306786,13 +319306,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -306803,10 +319323,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -306817,11 +319337,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -306832,13 +319352,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -306849,14 +319369,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -306867,13 +319387,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -306884,10 +319404,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -306898,11 +319418,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -306913,13 +319433,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -306930,14 +319450,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -306948,13 +319468,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -306965,10 +319485,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -306979,11 +319499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -306994,13 +319514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -307011,14 +319531,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -307029,13 +319549,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -307046,10 +319566,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -307060,11 +319580,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -307075,13 +319595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -307092,14 +319612,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -307110,10 +319630,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -307124,10 +319644,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -307138,14 +319658,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -307156,7 +319676,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -307164,7 +319684,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -307175,14 +319695,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -307193,7 +319713,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -307201,7 +319721,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -307212,11 +319732,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307227,11 +319747,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307242,11 +319762,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307257,11 +319777,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307272,11 +319792,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307287,11 +319807,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307302,11 +319822,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307317,11 +319837,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -307332,11 +319852,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -307347,11 +319867,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -307362,11 +319882,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -307377,11 +319897,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -307392,11 +319912,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -307407,11 +319927,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -307422,11 +319942,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -307437,11 +319957,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -307452,14 +319972,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -307470,11 +319990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -307485,10 +320005,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -307499,13 +320019,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -307516,11 +320036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -307531,11 +320051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -307546,10 +320066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -307560,13 +320080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -307577,11 +320097,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -307592,11 +320112,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -307607,10 +320127,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -307621,13 +320141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -307638,11 +320158,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -307653,11 +320173,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -307668,10 +320188,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -307682,13 +320202,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -307699,11 +320219,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -307714,11 +320234,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -307729,10 +320249,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -307743,13 +320263,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -307760,11 +320280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -307775,11 +320295,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -307790,10 +320310,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -307804,13 +320324,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -307821,11 +320341,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -307836,7 +320356,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -307847,7 +320367,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -307858,11 +320378,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -307873,10 +320393,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -307887,13 +320407,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -307904,11 +320424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -307919,14 +320439,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -307937,11 +320457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -307952,11 +320472,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -307967,14 +320487,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -307985,13 +320505,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -308002,13 +320522,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -308019,13 +320539,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -308036,11 +320556,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -308051,14 +320571,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -308069,11 +320589,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -308084,14 +320604,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -308102,11 +320622,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -308117,11 +320637,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -308132,10 +320652,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -308146,7 +320666,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -308154,7 +320674,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -308165,14 +320685,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -308183,11 +320703,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -308198,10 +320718,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -308212,7 +320732,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -308221,7 +320741,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -308232,7 +320752,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -308243,7 +320763,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -308254,7 +320774,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -308268,7 +320788,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -308279,7 +320799,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -308291,7 +320811,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -308302,7 +320822,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -308315,7 +320835,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -308326,7 +320846,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -308337,7 +320857,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -308348,7 +320868,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -308361,7 +320881,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -308372,7 +320892,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -308383,7 +320903,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -308394,7 +320914,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -308406,7 +320926,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -308417,7 +320937,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -308427,7 +320947,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -308438,11 +320958,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -308453,11 +320973,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -308468,10 +320988,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -308482,7 +321002,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -308491,36 +321046,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -308530,36 +321085,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -308570,18 +321125,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -308591,18 +321146,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -308613,18 +321168,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -308634,143 +321189,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -308780,18 +321335,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -308800,412 +321355,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -309217,18 +321772,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -309237,262 +321792,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -309501,18 +322056,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -309520,373 +322075,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -309899,264 +322454,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -310169,52 +322739,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub use self::__parse__BinaryFirstLvlOp::BinaryFirstLvlOpParser;
@@ -310320,7 +322890,7 @@
         // State 0
         0,
         // State 1
-        -215,
+        -217,
         // State 2
         -74,
         // State 3
@@ -311446,19 +324016,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -311470,37 +324040,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -311512,7 +324082,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -311524,7 +324094,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -311542,43 +324112,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -311596,19 +324166,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -311620,7 +324190,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -311632,7 +324202,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -311644,25 +324214,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -311675,108 +324245,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -311788,43 +324358,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -311836,14 +324406,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -311861,238 +324431,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => __state_machine::SimulatedReduce::Accept,
             215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 95,
+                    nonterminal_produced: 94,
                 }
             }
-            216 => {
+            216 => __state_machine::SimulatedReduce::Accept,
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -312811,18 +325399,18 @@
                 __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             214 => {
-                // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
-                let __sym0 = __pop_Variant27(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action22::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             215 => {
                 __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             216 => {
-                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
+                let __sym0 = __pop_Variant27(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action23::<>(__sym0);
+                return Some(Ok(__nt));
             }
             217 => {
                 __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -312920,6 +325508,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -313570,10 +326167,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -313584,11 +326181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -313599,11 +326196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -313614,13 +326211,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -313631,11 +326228,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -313646,10 +326243,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -313660,11 +326257,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -313675,10 +326272,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -313689,11 +326286,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -313704,10 +326301,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -313718,13 +326315,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -313735,13 +326332,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -313752,10 +326349,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -313766,14 +326363,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -313784,14 +326381,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -313802,10 +326399,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -313816,13 +326413,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -313833,13 +326430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -313850,10 +326447,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -313864,14 +326461,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -313882,14 +326479,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -313900,10 +326497,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -313914,13 +326511,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -313931,10 +326528,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -313945,11 +326542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -313960,13 +326557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -313977,14 +326574,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -313995,13 +326592,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -314012,10 +326609,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -314026,11 +326623,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -314041,13 +326638,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -314058,14 +326655,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -314076,13 +326673,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -314093,10 +326690,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -314107,11 +326704,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -314122,13 +326719,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -314139,14 +326736,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -314157,13 +326754,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -314174,10 +326771,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -314188,11 +326785,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -314203,13 +326800,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -314220,14 +326817,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -314238,13 +326835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -314255,10 +326852,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -314269,11 +326866,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -314284,13 +326881,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -314301,14 +326898,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -314319,13 +326916,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -314336,10 +326933,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -314350,11 +326947,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -314365,13 +326962,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -314382,14 +326979,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -314400,13 +326997,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -314417,10 +327014,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -314431,11 +327028,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -314446,13 +327043,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -314463,14 +327060,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -314481,10 +327078,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -314495,10 +327092,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -314509,14 +327106,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -314527,7 +327124,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -314535,7 +327132,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -314546,14 +327143,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -314564,7 +327161,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -314572,7 +327169,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -314583,11 +327180,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314598,11 +327195,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314613,11 +327210,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314628,11 +327225,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314643,11 +327240,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314658,11 +327255,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314673,11 +327270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314688,11 +327285,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -314703,11 +327300,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -314718,11 +327315,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -314733,11 +327330,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -314748,11 +327345,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -314763,11 +327360,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -314778,11 +327375,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -314793,11 +327390,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -314808,11 +327405,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -314823,14 +327420,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -314841,11 +327438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -314856,10 +327453,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -314870,13 +327467,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -314887,11 +327484,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -314902,11 +327499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -314917,10 +327514,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -314931,13 +327528,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -314948,11 +327545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -314963,11 +327560,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -314978,10 +327575,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -314992,13 +327589,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -315009,11 +327606,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -315024,11 +327621,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -315039,10 +327636,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -315053,13 +327650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -315070,11 +327667,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -315085,11 +327682,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -315100,10 +327697,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -315114,13 +327711,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -315131,11 +327728,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -315146,11 +327743,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -315161,10 +327758,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -315175,13 +327772,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -315192,11 +327789,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -315207,7 +327804,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -315218,7 +327815,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -315229,11 +327826,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -315244,10 +327841,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -315258,13 +327855,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -315275,11 +327872,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -315290,14 +327887,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -315308,11 +327905,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -315323,11 +327920,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -315338,14 +327935,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -315356,13 +327953,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -315373,13 +327970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -315390,13 +327987,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -315407,11 +328004,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -315422,14 +328019,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -315440,11 +328037,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -315455,14 +328052,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -315473,11 +328070,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -315488,11 +328085,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -315503,10 +328100,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -315517,7 +328114,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -315525,7 +328122,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -315536,14 +328133,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -315554,11 +328151,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -315569,10 +328166,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -315583,7 +328180,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -315592,7 +328189,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -315603,7 +328200,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -315614,7 +328211,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -315625,7 +328222,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -315639,7 +328236,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -315650,7 +328247,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -315662,7 +328259,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -315673,7 +328270,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -315686,7 +328283,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -315697,7 +328294,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -315708,7 +328305,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -315719,7 +328316,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -315732,7 +328329,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -315743,7 +328340,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -315754,7 +328351,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -315765,7 +328362,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -315777,7 +328374,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -315788,7 +328385,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -315798,7 +328395,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -315809,11 +328406,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -315824,11 +328421,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -315839,10 +328436,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -315853,7 +328450,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -315862,36 +328494,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -315901,36 +328533,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -315941,18 +328573,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -315962,18 +328594,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -315984,18 +328616,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -316005,143 +328637,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -316151,18 +328783,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -316171,412 +328803,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -316588,18 +329220,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -316608,262 +329240,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -316872,18 +329504,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -316891,373 +329523,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -317270,264 +329902,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -317540,52 +330187,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub use self::__parse__BinarySecondLvlOp::BinarySecondLvlOpParser;
@@ -317695,7 +330342,7 @@
         // State 0
         0,
         // State 1
-        -216,
+        -218,
         // State 2
         -77,
         // State 3
@@ -318825,19 +331472,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -318849,37 +331496,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -318891,7 +331538,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -318903,7 +331550,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -318921,43 +331568,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -318975,19 +331622,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -318999,7 +331646,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -319011,7 +331658,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -319023,25 +331670,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -319054,108 +331701,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -319167,43 +331814,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -319215,14 +331862,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -319240,238 +331887,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => __state_machine::SimulatedReduce::Accept,
             216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 96,
+                    nonterminal_produced: 95,
                 }
             }
-            217 => {
+            217 => __state_machine::SimulatedReduce::Accept,
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -320193,18 +332858,18 @@
                 __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             215 => {
-                // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
-                let __sym0 = __pop_Variant27(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action23::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             216 => {
                 __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             217 => {
-                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
+                let __sym0 = __pop_Variant27(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action24::<>(__sym0);
+                return Some(Ok(__nt));
             }
             218 => {
                 __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -320299,6 +332964,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -320949,10 +333623,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -320963,11 +333637,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -320978,11 +333652,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -320993,13 +333667,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -321010,11 +333684,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -321025,10 +333699,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -321039,11 +333713,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -321054,10 +333728,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -321068,11 +333742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -321083,10 +333757,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -321097,13 +333771,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -321114,13 +333788,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -321131,10 +333805,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -321145,14 +333819,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -321163,14 +333837,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -321181,10 +333855,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -321195,13 +333869,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -321212,13 +333886,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -321229,10 +333903,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -321243,14 +333917,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -321261,14 +333935,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -321279,10 +333953,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -321293,13 +333967,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -321310,10 +333984,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -321324,11 +333998,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -321339,13 +334013,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -321356,14 +334030,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -321374,13 +334048,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -321391,10 +334065,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -321405,11 +334079,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -321420,13 +334094,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -321437,14 +334111,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -321455,13 +334129,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -321472,10 +334146,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -321486,11 +334160,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -321501,13 +334175,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -321518,14 +334192,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -321536,13 +334210,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -321553,10 +334227,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -321567,11 +334241,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -321582,13 +334256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -321599,14 +334273,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -321617,13 +334291,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -321634,10 +334308,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -321648,11 +334322,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -321663,13 +334337,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -321680,14 +334354,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -321698,13 +334372,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -321715,10 +334389,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -321729,11 +334403,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -321744,13 +334418,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -321761,14 +334435,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -321779,13 +334453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -321796,10 +334470,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -321810,11 +334484,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -321825,13 +334499,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -321842,14 +334516,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -321860,10 +334534,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -321874,10 +334548,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -321888,14 +334562,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -321906,7 +334580,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -321914,7 +334588,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -321925,14 +334599,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -321943,7 +334617,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -321951,7 +334625,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -321962,11 +334636,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -321977,11 +334651,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -321992,11 +334666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -322007,11 +334681,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -322022,11 +334696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -322037,11 +334711,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -322052,11 +334726,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -322067,11 +334741,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -322082,11 +334756,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -322097,11 +334771,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -322112,11 +334786,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -322127,11 +334801,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -322142,11 +334816,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -322157,11 +334831,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -322172,11 +334846,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -322187,11 +334861,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -322202,14 +334876,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -322220,11 +334894,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -322235,10 +334909,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -322249,13 +334923,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -322266,11 +334940,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -322281,11 +334955,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -322296,10 +334970,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -322310,13 +334984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -322327,11 +335001,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -322342,11 +335016,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -322357,10 +335031,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -322371,13 +335045,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -322388,11 +335062,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -322403,11 +335077,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -322418,10 +335092,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -322432,13 +335106,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -322449,11 +335123,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -322464,11 +335138,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -322479,10 +335153,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -322493,13 +335167,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -322510,11 +335184,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -322525,11 +335199,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -322540,10 +335214,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -322554,13 +335228,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -322571,11 +335245,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -322586,7 +335260,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -322597,7 +335271,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -322608,11 +335282,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -322623,10 +335297,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -322637,13 +335311,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -322654,11 +335328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -322669,14 +335343,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -322687,11 +335361,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -322702,11 +335376,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -322717,14 +335391,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -322735,13 +335409,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -322752,13 +335426,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -322769,13 +335443,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -322786,11 +335460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -322801,14 +335475,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -322819,11 +335493,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -322834,14 +335508,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -322852,11 +335526,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -322867,11 +335541,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -322882,10 +335556,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -322896,7 +335570,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -322904,7 +335578,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -322915,14 +335589,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -322933,11 +335607,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -322948,10 +335622,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -322962,7 +335636,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -322971,7 +335645,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -322982,7 +335656,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -322993,7 +335667,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -323004,7 +335678,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -323018,7 +335692,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -323029,7 +335703,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -323041,7 +335715,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -323052,7 +335726,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -323065,7 +335739,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -323076,7 +335750,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -323087,7 +335761,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -323098,7 +335772,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -323111,7 +335785,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -323122,7 +335796,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -323133,7 +335807,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -323144,7 +335818,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -323156,7 +335830,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -323167,7 +335841,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -323177,7 +335851,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -323188,11 +335862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -323203,11 +335877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -323218,10 +335892,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -323232,7 +335906,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -323241,36 +335950,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -323280,36 +335989,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -323320,18 +336029,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -323341,18 +336050,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -323363,18 +336072,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -323384,143 +336093,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -323530,18 +336239,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -323550,412 +336259,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -323967,18 +336676,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -323987,262 +336696,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -324251,18 +336960,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -324270,373 +336979,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -324649,264 +337358,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -324919,52 +337643,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub use self::__parse__BinaryThirdLvlOp::BinaryThirdLvlOpParser;
@@ -325055,321 +337779,331 @@
         // State 0
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 72, 7, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 73, 7, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, -164, -164, -164, -164, 13, -164, -164, -164, -164, -164, 0, 14, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 15, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 13, -166, -166, -166, -166, -166, 0, 14, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 15, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 72, 7, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 80, 0,
+        0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 73, 7, 0, 0, 8, 0, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 81, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 9
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 14, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 15, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 14, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 15, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 12
-        90, 0, 0, 21, 0, 22, -82, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, -82, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 15
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 16
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 108, 0, 0, 0,
         // State 17
-        0, 107, -121, -121, 108, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 109, 110, 0, 111, 112, 113, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 114, -121, 0,
+        0, 109, -121, -121, 110, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 111, 112, 0, 113, 114, 115, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 116, -121, 0,
         // State 18
-        0, 0, 115, -111, 0, 0, -111, 116, -111, -111, -111, 0, 0, -111, 117, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        0, 0, 117, -111, 0, 0, -111, 118, -111, -111, -111, 0, 0, -111, 119, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 19
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 20
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 37, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 37, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 21
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 22
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 25
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 108, 0, 0, 0,
         // State 26
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 27
-        90, 0, 0, 21, 0, 22, -84, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, -84, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 28
-        0, 0, 0, 102, 0, 0, -81, 0, 103, 126, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, -81, 0, 105, 128, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 29
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 30
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 31
-        0, -164, -164, -164, -164, 13, -164, -164, -164, -164, -164, 0, 14, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 15, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 13, -166, -166, -166, -166, -166, 0, 14, 0, -166, 0, 130, -166, -166, -166, 0, -166, -166, -166, 15, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 32
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 33
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 34
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 35
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 36
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 37
-        0, 0, 0, 102, 0, 0, 130, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 133, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 38
-        0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 39
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 40
-        0, 0, 0, 102, 0, 0, -83, 0, 103, 135, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, -83, 0, 105, 138, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 42
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 108, 0, 0, 0,
         // State 43
-        0, 0, 115, -110, 0, 0, -110, 116, -110, -110, -110, 0, 0, -110, 117, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, 0, 117, -110, 0, 0, -110, 118, -110, -110, -110, 0, 0, -110, 119, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
         // State 44
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
         // State 45
-        0, 107, -120, -120, 108, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 109, 110, 0, 111, 112, 113, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 114, -120, 0,
+        0, 109, -120, -120, 110, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 111, 112, 0, 113, 114, 115, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 116, -120, 0,
         // State 46
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
-        0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 50
-        0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 51
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 52
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 53
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 106, 0, 0, 0,
+        0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 54
-        0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 55
-        0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 108, 0, 0, 0,
         // State 56
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 57
-        90, 0, 0, 21, 0, 22, 0, 23, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 72, 0, 0, 93, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 95,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 58
-        0, 0, 0, 102, 0, 0, 0, 0, 103, -190, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, -190, 0,
+        91, 0, 0, 21, 0, 22, 0, 23, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 73, 0, 0, 94, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 96,
         // State 59
-        0, 0, 0, 102, 0, 0, 0, 0, 103, 0, 104, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, -192, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, -192, 0,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 105, 0, 106, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0,
         // State 61
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 65
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 66
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 67
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 68
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 69
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 71
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
         // State 76
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
         // State 82
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 83
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
         // State 84
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
         // State 85
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
         // State 86
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
         // State 87
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
         // State 88
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
         // State 89
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
         // State 90
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 91
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 92
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
         // State 93
         0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
         // State 94
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
         // State 95
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 96
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
         // State 98
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 101
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 103
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 104
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 105
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 106
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 107
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 108
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 109
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 110
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 111
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 112
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 113
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 114
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 115
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 116
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 117
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 118
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 119
-        0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
         // State 120
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
         // State 121
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
         // State 123
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 124
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
         // State 125
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 126
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
         // State 127
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 128
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
         // State 129
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 130
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
         // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
         // State 132
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
         // State 133
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
         // State 134
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 136
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 137
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 138
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0,
         // State 139
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
         // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
         // State 143
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 144
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 146
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 149
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 150
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 151
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 154
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 156
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 157
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 158
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 159
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 160
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 161
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 162
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -325496,9 +338230,9 @@
         // State 59
         0,
         // State 60
-        -217,
-        // State 61
         0,
+        // State 61
+        -219,
         // State 62
         0,
         // State 63
@@ -325534,9 +338268,9 @@
         // State 78
         0,
         // State 79
-        -80,
-        // State 80
         0,
+        // State 80
+        -80,
         // State 81
         0,
         // State 82
@@ -325693,29 +338427,40 @@
         0,
         // State 158
         0,
+        // State 159
+        0,
+        // State 160
+        0,
+        // State 161
+        0,
+        // State 162
+        0,
+        // State 163
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             1 => 2,
             15 => 27,
-            30 => 48,
-            33 => 54,
-            36 => 61,
+            30 => 49,
+            33 => 53,
+            36 => 62,
             37 => 34,
             38 => 35,
             39 => 33,
             40 => match state {
-                16 => 100,
-                25 => 122,
-                42 => 138,
-                44 => 139,
-                53 => 151,
-                _ => 60,
+                16 => 102,
+                25 => 124,
+                42 => 141,
+                44 => 142,
+                55 => 158,
+                _ => 61,
             },
-            41 => 97,
-            45 => 135,
+            41 => 98,
+            45 => 138,
             46 => match state {
-                55 => 155,
+                51 => 151,
+                56 => 160,
                 _ => 146,
             },
             49 => match state {
@@ -325728,20 +338473,20 @@
                 26 => 39,
                 27 => 40,
                 32 => 42,
-                49 => 53,
-                51 => 56,
-                52 => 58,
-                57 => 59,
+                50 => 55,
+                52 => 57,
+                54 => 59,
+                58 => 60,
                 _ => 16,
             },
-            50 => 82,
+            50 => 83,
             51 => match state {
-                19 => 117,
-                20 => 118,
-                22 => 120,
-                34 => 127,
-                36 => 128,
-                _ => 83,
+                19 => 119,
+                20 => 120,
+                22 => 122,
+                34 => 130,
+                36 => 131,
+                _ => 84,
             },
             52 => match state {
                 35 => 45,
@@ -325752,64 +338497,65 @@
                 _ => 18,
             },
             55 => match state {
-                1 | 4 => 62,
-                _ => 84,
+                1 | 4 => 63,
+                _ => 85,
             },
-            58 => 63,
+            58 => 64,
             60 => match state {
                 2 => 10,
-                15 | 21 | 26 | 51..=52 | 57 => 31,
-                5 => 81,
-                7 => 95,
-                13 => 98,
-                23 => 121,
-                38 | 47 | 50 | 54..=55 => 131,
-                41 | 48 => 136,
-                46 => 140,
+                15 | 21 | 26 | 52 | 54 | 58 => 31,
+                5 => 82,
+                7 => 96,
+                13 => 99,
+                23 => 123,
+                38 | 47..=48 | 51 | 53 | 56 => 134,
+                41 | 49 => 139,
+                46 => 143,
                 _ => 3,
             },
-            62 => 64,
-            64 => 65,
-            68 => 4,
-            71 => match state {
-                1 | 4 => 66,
-                2 => 72,
-                _ => 85,
-            },
+            62 => 100,
+            63 => 65,
+            65 => 66,
+            69 => 4,
             72 => match state {
-                11 => 96,
-                _ => 76,
+                1 | 4 => 67,
+                2 => 73,
+                _ => 86,
             },
-            73 => 11,
-            75 => 46,
-            77 => 67,
-            78 => match state {
-                4 => 78,
-                _ => 68,
+            73 => match state {
+                11 => 97,
+                _ => 77,
             },
-            82 => match state {
-                21 => 119,
-                26 => 123,
-                51 => 148,
-                52 => 150,
-                57 => 156,
-                _ => 99,
+            74 => 11,
+            76 => 46,
+            78 => 68,
+            79 => match state {
+                4 => 79,
+                _ => 69,
             },
             83 => match state {
-                48 => 143,
-                _ => 137,
+                21 => 121,
+                26 => 125,
+                52 => 152,
+                54 => 157,
+                58 => 161,
+                _ => 101,
+            },
+            84 => match state {
+                49 => 148,
+                _ => 140,
             },
-            85 => 86,
             86 => 87,
-            87 => match state {
-                38 => 132,
-                47 => 142,
-                54 => 152,
+            87 => 88,
+            88 => match state {
+                38 => 135,
+                47 => 145,
+                53 => 153,
                 _ => 147,
             },
-            89 => 19,
-            90 => 88,
-            91 => 69,
+            90 => 19,
+            91 => 89,
+            92 => 70,
             _ => 0,
         }
     }
@@ -326925,19 +339671,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -326949,37 +339695,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -326991,7 +339737,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -327003,7 +339749,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -327021,43 +339767,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -327075,19 +339821,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -327099,7 +339845,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -327111,7 +339857,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -327123,25 +339869,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -327154,108 +339900,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -327267,43 +340013,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -327315,14 +340061,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -327340,238 +340086,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => __state_machine::SimulatedReduce::Accept,
             217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 97,
+                    nonterminal_produced: 96,
                 }
             }
-            218 => {
+            218 => __state_machine::SimulatedReduce::Accept,
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -328296,18 +341060,18 @@
                 __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             216 => {
-                // __Block = Block => ActionFn(5);
-                let __sym0 = __pop_Variant10(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action5::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             217 => {
                 __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             218 => {
-                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Block = Block => ActionFn(6);
+                let __sym0 = __pop_Variant10(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action6::<>(__sym0);
+                return Some(Ok(__nt));
             }
             219 => {
                 __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -328399,6 +341163,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -329049,10 +341822,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -329063,11 +341836,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -329078,11 +341851,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -329093,13 +341866,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -329110,11 +341883,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -329125,10 +341898,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -329139,11 +341912,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -329154,10 +341927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -329168,11 +341941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -329183,10 +341956,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -329197,13 +341970,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -329214,13 +341987,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -329231,10 +342004,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -329245,14 +342018,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -329263,14 +342036,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -329281,10 +342054,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -329295,13 +342068,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -329312,13 +342085,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -329329,10 +342102,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -329343,14 +342116,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -329361,14 +342134,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -329379,10 +342152,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -329393,13 +342166,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -329410,10 +342183,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -329424,11 +342197,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -329439,13 +342212,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -329456,14 +342229,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -329474,13 +342247,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -329491,10 +342264,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -329505,11 +342278,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -329520,13 +342293,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -329537,14 +342310,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -329555,13 +342328,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -329572,10 +342345,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -329586,11 +342359,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -329601,13 +342374,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -329618,14 +342391,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -329636,13 +342409,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -329653,10 +342426,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -329667,11 +342440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -329682,13 +342455,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -329699,14 +342472,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -329717,13 +342490,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -329734,10 +342507,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -329748,11 +342521,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -329763,13 +342536,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -329780,14 +342553,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -329798,13 +342571,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -329815,10 +342588,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -329829,11 +342602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -329844,13 +342617,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -329861,14 +342634,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -329879,13 +342652,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -329896,10 +342669,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -329910,11 +342683,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -329925,13 +342698,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -329942,14 +342715,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -329960,10 +342733,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -329974,10 +342747,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -329988,14 +342761,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -330006,7 +342779,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -330014,7 +342787,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -330025,14 +342798,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -330043,7 +342816,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -330051,7 +342824,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -330062,11 +342835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330077,11 +342850,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330092,11 +342865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330107,11 +342880,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330122,11 +342895,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330137,11 +342910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330152,11 +342925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330167,11 +342940,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -330182,11 +342955,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -330197,11 +342970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -330212,11 +342985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -330227,11 +343000,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -330242,11 +343015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -330257,11 +343030,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -330272,11 +343045,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -330287,11 +343060,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -330302,14 +343075,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -330320,11 +343093,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -330335,10 +343108,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -330349,13 +343122,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -330366,11 +343139,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -330381,11 +343154,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -330396,10 +343169,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -330410,13 +343183,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -330427,11 +343200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -330442,11 +343215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -330457,10 +343230,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -330471,13 +343244,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -330488,11 +343261,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -330503,11 +343276,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -330518,10 +343291,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -330532,13 +343305,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -330549,11 +343322,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -330564,11 +343337,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -330579,10 +343352,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -330593,13 +343366,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -330610,11 +343383,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -330625,11 +343398,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -330640,10 +343413,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -330654,13 +343427,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -330671,11 +343444,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -330686,7 +343459,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -330697,7 +343470,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -330708,11 +343481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -330723,10 +343496,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -330737,13 +343510,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -330754,11 +343527,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -330769,14 +343542,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -330787,11 +343560,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -330802,11 +343575,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -330817,14 +343590,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -330835,13 +343608,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -330852,13 +343625,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -330869,13 +343642,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -330886,11 +343659,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -330901,14 +343674,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -330919,11 +343692,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -330934,14 +343707,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -330952,11 +343725,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -330967,11 +343740,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -330982,10 +343755,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -330996,7 +343769,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -331004,7 +343777,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -331015,14 +343788,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -331033,11 +343806,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -331048,10 +343821,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -331062,7 +343835,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -331071,7 +343844,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -331082,7 +343855,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -331093,7 +343866,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -331104,7 +343877,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -331118,7 +343891,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -331129,7 +343902,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -331141,7 +343914,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -331152,7 +343925,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -331165,7 +343938,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -331176,7 +343949,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -331187,7 +343960,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -331198,7 +343971,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -331211,7 +343984,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -331222,7 +343995,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -331233,7 +344006,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -331244,7 +344017,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -331256,7 +344029,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -331267,7 +344040,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -331277,7 +344050,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -331288,11 +344061,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -331303,11 +344076,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -331318,10 +344091,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -331332,7 +344105,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -331341,36 +344149,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -331380,36 +344188,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -331420,18 +344228,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -331441,18 +344249,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -331463,18 +344271,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -331484,143 +344292,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -331630,18 +344438,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -331650,412 +344458,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -332067,18 +344875,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -332087,262 +344895,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -332351,18 +345159,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -332370,373 +345178,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -332749,264 +345557,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -333019,52 +345842,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Block::BlockParser;
@@ -333155,215 +345978,225 @@
         // State 0
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 6
-        0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 64, 0, 0, 0, 0, 65, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 9
-        0, 70, -121, -121, 71, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, -121, 72, 73, 0, 74, 75, 76, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 77, -121, 0,
+        0, 71, -121, -121, 72, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, -121, 73, 74, 0, 75, 76, 77, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 78, -121, 0,
         // State 10
-        0, 0, 78, -111, 0, 0, -111, 79, -111, -111, -111, 0, 0, 0, 80, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 79, -111, 0, 0, -111, 80, -111, -111, -111, 0, 0, 0, 81, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 11
-        0, -164, -164, -164, -164, 21, -164, -164, -164, -164, -164, 0, 22, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 23, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 21, -166, -166, -166, -166, -166, 0, 22, 0, -166, 0, 0, -166, -166, -166, 0, -166, -166, -166, 23, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 12
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 13
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 24, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 24, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 14
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 15
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 16
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 17
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 18
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 19
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 22, 0, -163, 0, 0, -163, -163, -163, 0, -163, -163, -163, 23, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 22, 0, -165, 0, 0, -165, -165, -165, 0, -165, -165, -165, 23, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 20
-        54, 0, 0, 14, 0, 15, -82, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, -82, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 23
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 24
-        0, 0, 0, 64, 0, 0, 93, 0, 65, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 95, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 25
-        0, -164, -164, -164, -164, 21, -164, -164, -164, -164, -164, 0, 22, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 23, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 21, -166, -166, -166, -166, -166, 0, 22, 0, -166, 0, 96, 0, -166, -166, 0, -166, -166, -166, 23, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 26
-        0, 0, 78, -110, 0, 0, -110, 79, -110, -110, -110, 0, 0, 0, 80, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 79, -110, 0, 0, -110, 80, -110, -110, -110, 0, 0, 0, 81, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 27
-        0, 70, -120, -120, 71, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, -120, 72, 73, 0, 74, 75, 76, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 77, -120, 0,
+        0, 71, -120, -120, 72, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, -120, 73, 74, 0, 75, 76, 77, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 78, -120, 0,
         // State 28
-        54, 0, 0, 14, 0, 15, -84, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        55, 0, 0, 14, 0, 15, -84, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 29
-        0, 0, 0, 64, 0, 0, -81, 0, 65, 96, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, -81, 0, 66, 99, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 30
-        0, 0, 0, 64, 0, 0, 0, 0, 65, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 32
-        0, 0, 0, 64, 0, 0, -83, 0, 65, 101, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, -83, 0, 66, 104, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
         // State 33
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        54, 0, 0, 14, 0, 15, 0, 16, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 39, 0, 0, 57, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 59,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 35
-        0, 0, 0, 64, 0, 0, 0, 0, 65, -190, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, -190, 0,
+        55, 0, 0, 14, 0, 15, 0, 16, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 40, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 60,
         // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 65, 0, 0, 0, 0, 66, -192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, -192, 0,
         // State 37
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 38
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 40
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 43
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 46
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 48
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 49
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 50
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 51
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 52
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 53
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 54
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 55
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 56
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 57
         0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 58
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 59
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 61
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 65
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 66
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 67
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 68
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 69
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 70
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 71
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 72
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 73
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 74
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 75
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 76
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 77
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 78
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 79
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 80
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, -167, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 81
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, -169, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 82
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 84
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0,
         // State 85
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 87
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, -168, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 90
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, -165, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, -170, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 91
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, -167, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 93
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 94
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 95
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, -166, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 97
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, -168, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 100
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 104
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 106
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 107
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 108
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 109
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 110
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -333442,9 +346275,9 @@
         // State 35
         0,
         // State 36
-        -218,
-        // State 37
         0,
+        // State 37
+        -220,
         // State 38
         0,
         // State 39
@@ -333502,9 +346335,9 @@
         // State 65
         0,
         // State 66
-        -105,
-        // State 67
         0,
+        // State 67
+        -105,
         // State 68
         0,
         // State 69
@@ -333581,38 +346414,49 @@
         0,
         // State 105
         0,
+        // State 106
+        0,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 28,
-            30 => 33,
+            30 => 34,
             33 => 6,
             37 => 17,
             38 => 18,
             39 => 16,
-            41 => 89,
-            45 => 97,
+            41 => 91,
+            45 => 100,
             46 => match state {
-                7 => 62,
-                _ => 44,
+                7 => 63,
+                33 => 104,
+                _ => 45,
             },
-            47 => 36,
+            47 => 37,
             49 => match state {
                 14 => 24,
                 20 => 29,
                 22 => 30,
                 28 => 32,
-                34 => 35,
+                35 => 36,
                 _ => 8,
             },
-            50 => 46,
+            50 => 47,
             51 => match state {
-                12 => 81,
-                13 => 82,
-                15 => 84,
-                17 => 87,
-                23 => 91,
-                _ => 47,
+                12 => 82,
+                13 => 83,
+                15 => 86,
+                17 => 89,
+                23 => 93,
+                _ => 48,
             },
             52 => match state {
                 18 => 27,
@@ -333622,40 +346466,41 @@
                 16 => 26,
                 _ => 10,
             },
-            55 => 48,
+            55 => 49,
             60 => match state {
-                14 | 34 => 25,
-                1 => 37,
-                2 | 4 | 6..=7 => 39,
-                3 => 42,
-                21 => 90,
-                31 | 33 => 98,
+                14 | 35 => 25,
+                1 => 38,
+                2 | 4 | 6..=7 | 33 => 40,
+                3 => 43,
+                21 => 92,
+                31 | 34 => 101,
                 _ => 11,
             },
-            71 => 49,
-            72 => match state {
-                19 => 88,
-                _ => 80,
-            },
-            73 => 19,
-            75 => 3,
-            82 => match state {
-                34 => 105,
-                _ => 83,
+            62 => 84,
+            72 => 50,
+            73 => match state {
+                19 => 90,
+                _ => 81,
             },
+            74 => 19,
+            76 => 3,
             83 => match state {
-                33 => 101,
-                _ => 99,
+                35 => 110,
+                _ => 85,
+            },
+            84 => match state {
+                34 => 105,
+                _ => 102,
             },
-            85 => 50,
             86 => 51,
-            87 => match state {
-                2 => 40,
-                6 => 59,
-                _ => 45,
+            87 => 52,
+            88 => match state {
+                2 => 41,
+                6 => 60,
+                _ => 46,
             },
-            89 => 12,
-            90 => 52,
+            90 => 12,
+            91 => 53,
             _ => 0,
         }
     }
@@ -334771,19 +347616,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -334795,37 +347640,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -334837,7 +347682,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -334849,7 +347694,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -334867,43 +347712,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -334921,19 +347766,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -334945,7 +347790,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -334957,7 +347802,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -334969,25 +347814,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -335000,108 +347845,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -335113,43 +347958,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -335161,14 +348006,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -335186,238 +348031,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => __state_machine::SimulatedReduce::Accept,
             218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 98,
+                    nonterminal_produced: 97,
                 }
             }
-            219 => {
+            219 => __state_machine::SimulatedReduce::Accept,
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -336145,18 +349008,18 @@
                 __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             217 => {
-                // __Constant = Constant => ActionFn(31);
-                let __sym0 = __pop_Variant32(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action31::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             218 => {
                 __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             219 => {
-                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Constant = Constant => ActionFn(32);
+                let __sym0 = __pop_Variant32(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action32::<>(__sym0);
+                return Some(Ok(__nt));
             }
             220 => {
                 __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -336245,6 +349108,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -336895,10 +349767,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -336909,11 +349781,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -336924,11 +349796,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -336939,13 +349811,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -336956,11 +349828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -336971,10 +349843,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -336985,11 +349857,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -337000,10 +349872,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -337014,11 +349886,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -337029,10 +349901,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -337043,13 +349915,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -337060,13 +349932,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -337077,10 +349949,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -337091,14 +349963,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -337109,14 +349981,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -337127,10 +349999,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -337141,13 +350013,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -337158,13 +350030,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -337175,10 +350047,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -337189,14 +350061,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -337207,14 +350079,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -337225,10 +350097,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -337239,13 +350111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -337256,10 +350128,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -337270,11 +350142,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -337285,13 +350157,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -337302,14 +350174,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -337320,13 +350192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -337337,10 +350209,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -337351,11 +350223,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -337366,13 +350238,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -337383,14 +350255,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -337401,13 +350273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -337418,10 +350290,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -337432,11 +350304,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -337447,13 +350319,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -337464,14 +350336,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -337482,13 +350354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -337499,10 +350371,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -337513,11 +350385,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -337528,13 +350400,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -337545,14 +350417,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -337563,13 +350435,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -337580,10 +350452,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -337594,11 +350466,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -337609,13 +350481,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -337626,14 +350498,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -337644,13 +350516,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -337661,10 +350533,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -337675,11 +350547,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -337690,13 +350562,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -337707,14 +350579,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -337725,13 +350597,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -337742,10 +350614,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -337756,11 +350628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -337771,13 +350643,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -337788,14 +350660,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -337806,10 +350678,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -337820,10 +350692,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -337834,14 +350706,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -337852,7 +350724,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -337860,7 +350732,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -337871,14 +350743,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -337889,7 +350761,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -337897,7 +350769,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -337908,11 +350780,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -337923,11 +350795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -337938,11 +350810,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -337953,11 +350825,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -337968,11 +350840,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -337983,11 +350855,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -337998,11 +350870,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -338013,11 +350885,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -338028,11 +350900,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -338043,11 +350915,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -338058,11 +350930,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -338073,11 +350945,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -338088,11 +350960,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -338103,11 +350975,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -338118,11 +350990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -338133,11 +351005,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -338148,14 +351020,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -338166,11 +351038,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -338181,10 +351053,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -338195,13 +351067,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -338212,11 +351084,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -338227,11 +351099,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -338242,10 +351114,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -338256,13 +351128,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -338273,11 +351145,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -338288,11 +351160,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -338303,10 +351175,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -338317,13 +351189,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -338334,11 +351206,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -338349,11 +351221,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -338364,10 +351236,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -338378,13 +351250,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -338395,11 +351267,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -338410,11 +351282,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -338425,10 +351297,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -338439,13 +351311,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -338456,11 +351328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -338471,11 +351343,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -338486,10 +351358,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -338500,13 +351372,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -338517,11 +351389,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -338532,7 +351404,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -338543,7 +351415,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -338554,11 +351426,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -338569,10 +351441,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -338583,13 +351455,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -338600,11 +351472,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -338615,14 +351487,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -338633,11 +351505,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -338648,11 +351520,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -338663,14 +351535,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -338681,13 +351553,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -338698,13 +351570,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -338715,13 +351587,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -338732,11 +351604,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -338747,14 +351619,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -338765,11 +351637,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -338780,14 +351652,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -338798,11 +351670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -338813,11 +351685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -338828,10 +351700,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -338842,7 +351714,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -338850,7 +351722,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -338861,14 +351733,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -338879,11 +351751,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -338894,10 +351766,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -338908,7 +351780,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -338917,7 +351789,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -338928,7 +351800,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -338939,7 +351811,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -338950,7 +351822,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -338964,7 +351836,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -338975,7 +351847,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -338987,7 +351859,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -338998,7 +351870,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -339011,7 +351883,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -339022,7 +351894,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -339033,7 +351905,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -339044,7 +351916,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -339057,7 +351929,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -339068,7 +351940,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -339079,7 +351951,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -339090,7 +351962,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -339102,7 +351974,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -339113,7 +351985,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -339123,7 +351995,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -339134,11 +352006,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -339149,11 +352021,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -339164,10 +352036,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -339178,7 +352050,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -339187,36 +352094,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -339226,36 +352133,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -339266,18 +352173,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -339287,18 +352194,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -339309,18 +352216,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -339330,143 +352237,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -339476,18 +352383,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -339496,412 +352403,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -339913,18 +352820,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -339933,262 +352840,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -340197,18 +353104,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -340216,373 +353123,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -340595,264 +353502,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -340865,52 +353787,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Constant::ConstantParser;
@@ -340999,171 +353921,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 1
-        0, 0, 0, 44, 0, 0, 0, 0, 45, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+        0, 0, 0, 49, 0, 0, 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
         // State 2
-        0, 49, -121, -121, 50, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 56, -121, 0,
+        0, 54, -121, -121, 55, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 56, 57, 0, 58, 59, 60, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 61, -121, 0,
         // State 3
-        0, 0, 57, -111, 0, 0, -111, 58, -111, -111, -111, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 62, -111, 0, 0, -111, 63, -111, -111, -111, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 4
-        0, -164, -164, -164, -164, 14, -164, -164, -164, -164, -164, 0, 15, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 16, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 14, -166, -166, -166, -166, -166, 0, 15, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 16, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 5
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 6
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 17, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 17, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 7
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 8
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 9
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 10
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 11
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 12
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 15, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 16, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 15, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 16, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 13
-        37, 0, 0, 7, 0, 8, -82, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, -82, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 16
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 17
-        0, 0, 0, 44, 0, 0, 70, 0, 45, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+        0, 0, 0, 49, 0, 0, 76, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
         // State 18
-        0, -164, -164, -164, -164, 14, -164, -164, -164, -164, -164, 0, 15, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 16, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 14, -166, -166, -166, -166, -166, 0, 15, 0, -166, 0, 77, 0, -166, -166, 0, -166, -166, -166, 16, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 19
-        0, 0, 57, -110, 0, 0, -110, 58, -110, -110, -110, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 62, -110, 0, 0, -110, 63, -110, -110, -110, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 20
-        0, 49, -120, -120, 50, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 56, -120, 0,
+        0, 54, -120, -120, 55, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 56, 57, 0, 58, 59, 60, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 61, -120, 0,
         // State 21
-        37, 0, 0, 7, 0, 8, -84, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 7, 0, 8, -84, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 22
-        0, 0, 0, 44, 0, 0, -81, 0, 45, 73, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+        0, 0, 0, 49, 0, 0, -81, 0, 50, 80, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
         // State 23
-        0, 0, 0, 44, 0, 0, 0, 0, 45, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+        0, 0, 0, 49, 0, 0, 0, 0, 50, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 25
-        0, 0, 0, 44, 0, 0, -83, 0, 45, 78, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0,
+        0, 0, 0, 49, 0, 0, -83, 0, 50, 85, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        37, 0, 0, 7, 0, 8, 0, 9, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 28
-        0, 0, 0, 44, 0, 0, 0, 0, 45, -190, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, -190, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        42, 0, 0, 7, 0, 8, 0, 9, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 31
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 49, 0, 0, 0, 0, 50, -192, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -192, 0,
         // State 33
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 35
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 36
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 37
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 38
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 39
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 40
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 41
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 42
         -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 43
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 44
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 45
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 46
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 47
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 48
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 49
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 50
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 51
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 52
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 53
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 54
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 55
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 56
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 57
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 58
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 59
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 60
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 61
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 62
-        0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 63
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 64
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 65
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 66
-        0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 67
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 68
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 69
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 70
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 71
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 72
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -341172,13 +354136,13 @@
         // State 0
         0,
         // State 1
-        -219,
+        -221,
         // State 2
         -121,
         // State 3
         -111,
         // State 4
-        -164,
+        -166,
         // State 5
         0,
         // State 6
@@ -341194,7 +354158,7 @@
         // State 11
         0,
         // State 12
-        -163,
+        -165,
         // State 13
         0,
         // State 14
@@ -341228,41 +354192,41 @@
         // State 28
         0,
         // State 29
-        -117,
+        0,
         // State 30
-        -119,
+        0,
         // State 31
-        -197,
+        0,
         // State 32
-        -211,
+        0,
         // State 33
-        -112,
+        0,
         // State 34
-        -195,
+        -117,
         // State 35
-        -196,
+        -119,
         // State 36
-        0,
+        -199,
         // State 37
-        0,
+        -213,
         // State 38
-        -209,
+        -112,
         // State 39
-        -138,
+        -197,
         // State 40
-        -208,
+        -198,
         // State 41
-        -210,
+        0,
         // State 42
         0,
         // State 43
-        0,
+        -211,
         // State 44
-        0,
+        -138,
         // State 45
-        0,
+        -210,
         // State 46
-        0,
+        -212,
         // State 47
         0,
         // State 48
@@ -341288,79 +354252,127 @@
         // State 58
         0,
         // State 59
-        -167,
+        0,
         // State 60
-        -116,
+        0,
         // State 61
-        -114,
+        0,
         // State 62
         0,
         // State 63
-        -115,
+        0,
         // State 64
-        -118,
+        -169,
         // State 65
-        -168,
+        -116,
         // State 66
-        0,
+        -114,
         // State 67
-        -165,
+        0,
         // State 68
-        -113,
+        0,
         // State 69
-        -194,
+        -115,
         // State 70
-        -198,
+        -118,
         // State 71
-        -124,
+        -170,
         // State 72
         0,
         // State 73
-        -166,
+        -167,
         // State 74
-        0,
+        -113,
         // State 75
-        0,
+        -196,
         // State 76
         0,
         // State 77
-        0,
+        -200,
         // State 78
-        0,
+        -124,
         // State 79
         0,
         // State 80
-        0,
+        -168,
         // State 81
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 21,
-            30 => 26,
+            30 => 27,
+            33 => 28,
             37 => 10,
             38 => 11,
             39 => 9,
-            41 => 66,
-            45 => 74,
+            41 => 72,
+            45 => 81,
+            46 => match state {
+                31 => 100,
+                33 => 102,
+                _ => 85,
+            },
             49 => match state {
                 7 => 17,
                 13 => 22,
                 15 => 23,
                 21 => 25,
-                27 => 28,
+                30 => 32,
                 _ => 1,
             },
-            50 => 29,
+            50 => 34,
             51 => match state {
-                5 => 60,
-                6 => 61,
-                8 => 63,
-                10 => 64,
-                16 => 68,
-                _ => 30,
+                5 => 65,
+                6 => 66,
+                8 => 69,
+                10 => 70,
+                16 => 74,
+                _ => 35,
             },
             52 => match state {
                 11 => 20,
@@ -341370,31 +354382,39 @@
                 9 => 19,
                 _ => 3,
             },
-            55 => 31,
+            55 => 36,
             60 => match state {
-                7 | 27 => 18,
-                14 => 67,
-                24 | 26 => 75,
+                7 | 30 => 18,
+                14 => 73,
+                24 | 27 => 82,
+                26 | 28 | 31 | 33 => 86,
+                29 => 94,
                 _ => 4,
             },
-            71 => 32,
-            72 => match state {
-                12 => 65,
-                _ => 59,
-            },
-            73 => 12,
-            82 => match state {
-                27 => 82,
-                _ => 62,
+            62 => 67,
+            72 => 37,
+            73 => match state {
+                12 => 71,
+                _ => 64,
             },
+            74 => 12,
+            76 => 29,
             83 => match state {
-                26 => 78,
-                _ => 76,
+                30 => 98,
+                _ => 68,
             },
-            85 => 33,
-            86 => 34,
-            89 => 5,
-            90 => 35,
+            84 => match state {
+                27 => 89,
+                _ => 83,
+            },
+            86 => 38,
+            87 => 39,
+            88 => match state {
+                28 => 92,
+                _ => 87,
+            },
+            90 => 5,
+            91 => 40,
             _ => 0,
         }
     }
@@ -342510,19 +355530,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -342534,37 +355554,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -342576,7 +355596,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -342588,7 +355608,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -342606,43 +355626,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -342660,19 +355680,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -342684,7 +355704,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -342696,7 +355716,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -342708,25 +355728,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -342739,108 +355759,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -342852,43 +355872,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -342900,14 +355920,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -342925,238 +355945,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => __state_machine::SimulatedReduce::Accept,
             219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 99,
+                    nonterminal_produced: 98,
                 }
             }
-            220 => {
+            220 => __state_machine::SimulatedReduce::Accept,
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -343887,18 +356925,18 @@
                 __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             218 => {
-                // __Expression = Expression => ActionFn(20);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action20::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             219 => {
                 __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             220 => {
-                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression = Expression => ActionFn(21);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action21::<>(__sym0);
+                return Some(Ok(__nt));
             }
             221 => {
                 __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -343984,6 +357022,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -344634,10 +357681,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -344648,11 +357695,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -344663,11 +357710,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -344678,13 +357725,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -344695,11 +357742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -344710,10 +357757,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -344724,11 +357771,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -344739,10 +357786,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -344753,11 +357800,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -344768,10 +357815,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -344782,13 +357829,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -344799,13 +357846,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -344816,10 +357863,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -344830,14 +357877,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -344848,14 +357895,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -344866,10 +357913,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -344880,13 +357927,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -344897,13 +357944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -344914,10 +357961,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -344928,14 +357975,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -344946,14 +357993,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -344964,10 +358011,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -344978,13 +358025,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -344995,10 +358042,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -345009,11 +358056,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -345024,13 +358071,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -345041,14 +358088,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -345059,13 +358106,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -345076,10 +358123,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -345090,11 +358137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -345105,13 +358152,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -345122,14 +358169,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -345140,13 +358187,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -345157,10 +358204,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -345171,11 +358218,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -345186,13 +358233,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -345203,14 +358250,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -345221,13 +358268,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -345238,10 +358285,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -345252,11 +358299,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -345267,13 +358314,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -345284,14 +358331,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -345302,13 +358349,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -345319,10 +358366,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -345333,11 +358380,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -345348,13 +358395,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -345365,14 +358412,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -345383,13 +358430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -345400,10 +358447,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -345414,11 +358461,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -345429,13 +358476,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -345446,14 +358493,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -345464,13 +358511,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -345481,10 +358528,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -345495,11 +358542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -345510,13 +358557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -345527,14 +358574,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -345545,10 +358592,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -345559,10 +358606,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -345573,14 +358620,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -345591,7 +358638,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -345599,7 +358646,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -345610,14 +358657,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -345628,7 +358675,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -345636,7 +358683,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -345647,11 +358694,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345662,11 +358709,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345677,11 +358724,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345692,11 +358739,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345707,11 +358754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345722,11 +358769,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345737,11 +358784,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345752,11 +358799,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -345767,11 +358814,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -345782,11 +358829,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -345797,11 +358844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -345812,11 +358859,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -345827,11 +358874,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -345842,11 +358889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -345857,11 +358904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -345872,11 +358919,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -345887,14 +358934,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -345905,11 +358952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -345920,10 +358967,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -345934,13 +358981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -345951,11 +358998,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -345966,11 +359013,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -345981,10 +359028,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -345995,13 +359042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -346012,11 +359059,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -346027,11 +359074,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -346042,10 +359089,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -346056,13 +359103,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -346073,11 +359120,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -346088,11 +359135,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -346103,10 +359150,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -346117,13 +359164,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -346134,11 +359181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -346149,11 +359196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -346164,10 +359211,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -346178,13 +359225,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -346195,11 +359242,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -346210,11 +359257,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -346225,10 +359272,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -346239,13 +359286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -346256,11 +359303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -346271,7 +359318,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -346282,7 +359329,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -346293,11 +359340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -346308,10 +359355,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -346322,13 +359369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -346339,11 +359386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -346354,14 +359401,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -346372,11 +359419,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -346387,11 +359434,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -346402,14 +359449,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -346420,13 +359467,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -346437,13 +359484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -346454,13 +359501,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -346471,11 +359518,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -346486,14 +359533,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -346504,11 +359551,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -346519,14 +359566,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -346537,11 +359584,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -346552,11 +359599,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -346567,10 +359614,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -346581,7 +359628,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -346589,7 +359636,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -346600,14 +359647,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -346618,11 +359665,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -346633,10 +359680,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -346647,7 +359694,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -346656,7 +359703,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -346667,7 +359714,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -346678,7 +359725,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -346689,7 +359736,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -346703,7 +359750,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -346714,7 +359761,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -346726,7 +359773,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -346737,7 +359784,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -346750,7 +359797,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -346761,7 +359808,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -346772,7 +359819,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -346783,7 +359830,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -346796,7 +359843,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -346807,7 +359854,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -346818,7 +359865,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -346829,7 +359876,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -346841,7 +359888,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -346852,7 +359899,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -346862,7 +359909,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -346873,11 +359920,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -346888,11 +359935,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -346903,10 +359950,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -346917,7 +359964,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -346926,36 +360008,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -346965,36 +360047,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -347005,18 +360087,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -347026,18 +360108,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -347048,18 +360130,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -347069,143 +360151,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -347215,18 +360297,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -347235,412 +360317,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -347652,18 +360734,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -347672,262 +360754,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -347936,18 +361018,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -347955,373 +361037,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -348334,264 +361416,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -348604,52 +361701,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Expression::ExpressionParser;
@@ -348738,171 +361835,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, -164, -164, -164, -164, 5, -164, -164, -164, -164, -164, 0, 6, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 7, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 5, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 7, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 2
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 3
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 6, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 7, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 6, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 7, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 4
-        43, 0, 0, 13, 0, 3, -82, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, -82, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 7
-        0, 0, 0, 49, 0, 0, 50, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, 56, 0, 57, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 8
-        0, 55, -121, -121, 56, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 62, -121, 0,
+        0, 61, -121, -121, 62, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 63, 64, 0, 65, 66, 67, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 68, -121, 0,
         // State 9
-        0, 0, 63, -111, 0, 0, -111, 64, -111, -111, -111, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 69, -111, 0, 0, -111, 70, -111, -111, -111, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 10
-        0, -164, -164, -164, -164, 5, -164, -164, -164, -164, -164, 0, 6, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 7, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 5, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 72, 0, -166, -166, 0, -166, -166, -166, 7, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 11
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 12
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 22, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 22, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 13
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 14
-        43, 0, 0, 13, 0, 3, -84, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, -84, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 15
-        0, 0, 0, 49, 0, 0, -81, 0, 51, 71, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, -81, 0, 57, 78, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 16
-        0, 0, 0, 49, 0, 0, 0, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, 0, 0, 57, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 17
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 18
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 19
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 20
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 21
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 22
-        0, 0, 0, 49, 0, 0, -83, 0, 51, 78, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, -83, 0, 57, 85, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 23
-        0, 0, 63, -110, 0, 0, -110, 64, -110, -110, -110, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 69, -110, 0, 0, -110, 70, -110, -110, -110, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 24
-        0, 55, -120, -120, 56, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 62, -120, 0,
+        0, 61, -120, -120, 62, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 63, 64, 0, 65, 66, 67, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 68, -120, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 27
-        0, 0, 0, 49, 0, 0, 0, 0, 51, -190, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, -190, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 41, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 30
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 55, 0, 0, 0, 0, 57, -192, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, -192, 0,
         // State 32
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 35
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 36
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 37
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 38
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 39
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 40
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 42
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 43
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 44
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 45
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 46
-        0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0,
         // State 47
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 49
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 50
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 51
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 52
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 54
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 55
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 56
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 57
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 58
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 59
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 60
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 61
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 62
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 63
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 64
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 65
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 66
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 67
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 68
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 69
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 70
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 71
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 76
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 83
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -348911,11 +362050,11 @@
         // State 0
         0,
         // State 1
-        -164,
+        -166,
         // State 2
         0,
         // State 3
-        -163,
+        -165,
         // State 4
         0,
         // State 5
@@ -348965,61 +362104,61 @@
         // State 27
         0,
         // State 28
-        -220,
+        0,
         // State 29
-        -197,
+        0,
         // State 30
-        -211,
+        0,
         // State 31
-        -112,
+        0,
         // State 32
-        -195,
+        0,
         // State 33
-        -196,
+        -222,
         // State 34
-        -209,
+        -199,
         // State 35
-        -138,
+        -213,
         // State 36
-        -208,
+        -112,
         // State 37
-        -210,
+        -197,
         // State 38
-        -167,
+        -198,
         // State 39
-        0,
+        -211,
         // State 40
-        0,
+        -138,
         // State 41
-        0,
+        -210,
         // State 42
-        0,
+        -212,
         // State 43
-        0,
+        -169,
         // State 44
         0,
         // State 45
-        -168,
+        0,
         // State 46
         0,
         // State 47
-        -165,
+        0,
         // State 48
         0,
         // State 49
-        -194,
+        0,
         // State 50
         0,
         // State 51
-        0,
+        -170,
         // State 52
         0,
         // State 53
-        0,
+        -167,
         // State 54
         0,
         // State 55
-        0,
+        -196,
         // State 56
         0,
         // State 57
@@ -349039,7 +362178,7 @@
         // State 64
         0,
         // State 65
-        -198,
+        0,
         // State 66
         0,
         // State 67
@@ -349047,13 +362186,13 @@
         // State 68
         0,
         // State 69
-        -124,
+        0,
         // State 70
         0,
         // State 71
-        -166,
-        // State 72
         0,
+        // State 72
+        -200,
         // State 73
         0,
         // State 74
@@ -349061,11 +362200,11 @@
         // State 75
         0,
         // State 76
-        0,
+        -124,
         // State 77
         0,
         // State 78
-        0,
+        -168,
         // State 79
         0,
         // State 80
@@ -349074,34 +362213,82 @@
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 14,
-            30 => 25,
+            30 => 26,
+            33 => 27,
             37 => 18,
             38 => 19,
             39 => 17,
-            41 => 46,
-            45 => 73,
+            41 => 52,
+            45 => 80,
+            46 => match state {
+                30 => 100,
+                32 => 102,
+                _ => 85,
+            },
             49 => match state {
                 4 => 15,
                 6 => 16,
                 14 => 22,
-                26 => 27,
+                29 => 31,
                 _ => 7,
             },
             50 => match state {
-                0 => 28,
-                _ => 39,
+                0 => 33,
+                _ => 44,
             },
             51 => match state {
-                11 => 66,
-                12 => 67,
-                13 => 68,
-                18 => 72,
-                21 => 76,
-                _ => 40,
+                11 => 73,
+                12 => 74,
+                13 => 75,
+                18 => 79,
+                21 => 83,
+                _ => 45,
             },
             52 => match state {
                 19 => 24,
@@ -349111,31 +362298,39 @@
                 17 => 23,
                 _ => 9,
             },
-            55 => 29,
+            55 => 34,
             60 => match state {
-                2 | 26 => 10,
-                5 => 47,
-                20 | 25 => 74,
+                2 | 29 => 10,
+                5 => 53,
+                20 | 26 => 81,
+                25 | 27 | 30 | 32 => 86,
+                28 => 94,
                 _ => 1,
             },
-            71 => 30,
-            72 => match state {
-                3 => 45,
-                _ => 38,
-            },
-            73 => 3,
-            82 => match state {
-                26 => 82,
-                _ => 41,
+            62 => 46,
+            72 => 35,
+            73 => match state {
+                3 => 51,
+                _ => 43,
             },
+            74 => 3,
+            76 => 28,
             83 => match state {
-                25 => 78,
-                _ => 75,
+                29 => 98,
+                _ => 47,
+            },
+            84 => match state {
+                26 => 89,
+                _ => 82,
+            },
+            86 => 36,
+            87 => 37,
+            88 => match state {
+                27 => 92,
+                _ => 87,
             },
-            85 => 31,
-            86 => 32,
-            89 => 11,
-            90 => 33,
+            90 => 11,
+            91 => 38,
             _ => 0,
         }
     }
@@ -350251,19 +363446,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -350275,37 +363470,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -350317,7 +363512,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -350329,7 +363524,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -350347,43 +363542,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -350401,19 +363596,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -350425,7 +363620,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -350437,7 +363632,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -350449,25 +363644,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -350480,108 +363675,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -350593,43 +363788,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -350641,14 +363836,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -350666,238 +363861,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => __state_machine::SimulatedReduce::Accept,
             220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 100,
+                    nonterminal_produced: 99,
                 }
             }
-            221 => {
+            221 => __state_machine::SimulatedReduce::Accept,
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -351631,18 +364844,18 @@
                 __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             219 => {
-                // __Expression0 = Expression0 => ActionFn(16);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action16::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             220 => {
                 __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             221 => {
-                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression0 = Expression0 => ActionFn(17);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action17::<>(__sym0);
+                return Some(Ok(__nt));
             }
             222 => {
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -351725,6 +364938,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -352375,10 +365597,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -352389,11 +365611,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -352404,11 +365626,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -352419,13 +365641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -352436,11 +365658,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -352451,10 +365673,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -352465,11 +365687,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -352480,10 +365702,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -352494,11 +365716,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -352509,10 +365731,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -352523,13 +365745,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -352540,13 +365762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -352557,10 +365779,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -352571,14 +365793,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -352589,14 +365811,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -352607,10 +365829,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -352621,13 +365843,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -352638,13 +365860,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -352655,10 +365877,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -352669,14 +365891,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -352687,14 +365909,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -352705,10 +365927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -352719,13 +365941,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -352736,10 +365958,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -352750,11 +365972,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -352765,13 +365987,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -352782,14 +366004,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -352800,13 +366022,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -352817,10 +366039,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -352831,11 +366053,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -352846,13 +366068,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -352863,14 +366085,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -352881,13 +366103,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -352898,10 +366120,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -352912,11 +366134,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -352927,13 +366149,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -352944,14 +366166,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -352962,13 +366184,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -352979,10 +366201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -352993,11 +366215,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -353008,13 +366230,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -353025,14 +366247,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -353043,13 +366265,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -353060,10 +366282,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -353074,11 +366296,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -353089,13 +366311,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -353106,14 +366328,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -353124,13 +366346,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -353141,10 +366363,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -353155,11 +366377,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -353170,13 +366392,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -353187,14 +366409,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -353205,13 +366427,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -353222,10 +366444,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -353236,11 +366458,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -353251,13 +366473,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -353268,14 +366490,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -353286,10 +366508,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -353300,10 +366522,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -353314,14 +366536,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -353332,7 +366554,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -353340,7 +366562,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -353351,14 +366573,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -353369,7 +366591,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -353377,7 +366599,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -353388,11 +366610,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353403,11 +366625,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353418,11 +366640,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353433,11 +366655,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353448,11 +366670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353463,11 +366685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353478,11 +366700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353493,11 +366715,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -353508,11 +366730,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -353523,11 +366745,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -353538,11 +366760,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -353553,11 +366775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -353568,11 +366790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -353583,11 +366805,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -353598,11 +366820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -353613,11 +366835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -353628,14 +366850,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -353646,11 +366868,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -353661,10 +366883,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -353675,13 +366897,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -353692,11 +366914,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -353707,11 +366929,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -353722,10 +366944,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -353736,13 +366958,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -353753,11 +366975,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -353768,11 +366990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -353783,10 +367005,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -353797,13 +367019,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -353814,11 +367036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -353829,11 +367051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -353844,10 +367066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -353858,13 +367080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -353875,11 +367097,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -353890,11 +367112,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -353905,10 +367127,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -353919,13 +367141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -353936,11 +367158,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -353951,11 +367173,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -353966,10 +367188,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -353980,13 +367202,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -353997,11 +367219,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -354012,7 +367234,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -354023,7 +367245,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -354034,11 +367256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -354049,10 +367271,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -354063,13 +367285,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -354080,11 +367302,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -354095,14 +367317,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -354113,11 +367335,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -354128,11 +367350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -354143,14 +367365,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -354161,13 +367383,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -354178,13 +367400,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -354195,13 +367417,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -354212,11 +367434,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -354227,14 +367449,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -354245,11 +367467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -354260,14 +367482,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -354278,11 +367500,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -354293,11 +367515,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -354308,10 +367530,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -354322,7 +367544,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -354330,7 +367552,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -354341,14 +367563,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -354359,11 +367581,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -354374,10 +367596,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -354388,7 +367610,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -354397,7 +367619,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -354408,7 +367630,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -354419,7 +367641,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -354430,7 +367652,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -354444,7 +367666,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -354455,7 +367677,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -354467,7 +367689,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -354478,7 +367700,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -354491,7 +367713,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -354502,7 +367724,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -354513,7 +367735,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -354524,7 +367746,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -354537,7 +367759,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -354548,7 +367770,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -354559,7 +367781,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -354570,7 +367792,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -354582,7 +367804,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -354593,7 +367815,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -354603,7 +367825,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -354614,11 +367836,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -354629,11 +367851,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -354644,10 +367866,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -354658,7 +367880,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -354667,36 +367924,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -354706,36 +367963,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -354746,18 +368003,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -354767,18 +368024,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -354789,18 +368046,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -354810,143 +368067,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -354956,18 +368213,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -354976,412 +368233,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -355393,18 +368650,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -355413,262 +368670,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -355677,18 +368934,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -355696,373 +368953,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -356075,264 +369332,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -356345,52 +369617,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Expression0::Expression0Parser;
@@ -356479,171 +369751,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 1
-        0, -164, -164, -164, -164, 8, -164, -164, -164, -164, -164, 0, 9, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 10, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 8, -166, -166, -166, -166, -166, 0, 9, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 10, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 2
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 3
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 4
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 5
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 6
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 9, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 10, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 9, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 10, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 7
-        36, 0, 0, 4, 0, 5, -82, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, -82, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 10
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 11
-        0, 0, 0, 53, 0, 0, 54, 0, 55, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 0, 0, 59, 0, 0, 60, 0, 61, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
         // State 12
-        0, 59, -121, -121, 60, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 66, -121, 0,
+        0, 65, -121, -121, 66, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 67, 68, 0, 69, 70, 71, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 72, -121, 0,
         // State 13
-        0, 0, 67, -111, 0, 0, -111, 68, -111, -111, -111, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 73, -111, 0, 0, -111, 74, -111, -111, -111, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 14
-        0, -164, -164, -164, -164, 8, -164, -164, -164, -164, -164, 0, 9, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 10, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 8, -166, -166, -166, -166, -166, 0, 9, 0, -166, 0, 76, 0, -166, -166, 0, -166, -166, -166, 10, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 15
-        36, 0, 0, 4, 0, 5, -84, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, -84, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 16
-        0, 0, 0, 53, 0, 0, -81, 0, 55, 72, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 0, 0, 59, 0, 0, -81, 0, 61, 79, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
         // State 17
-        0, 0, 0, 53, 0, 0, 0, 0, 55, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 0, 0, 59, 0, 0, 0, 0, 61, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
         // State 18
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 19
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 20
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 22
-        0, 0, 0, 53, 0, 0, -83, 0, 55, 78, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 0, 0, 59, 0, 0, -83, 0, 61, 85, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0,
         // State 23
-        0, 0, 67, -110, 0, 0, -110, 68, -110, -110, -110, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 73, -110, 0, 0, -110, 74, -110, -110, -110, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 24
-        0, 59, -120, -120, 60, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 66, -120, 0,
+        0, 65, -120, -120, 66, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 67, 68, 0, 69, 70, 71, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 72, -120, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        36, 0, 0, 4, 0, 5, 0, 6, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 39, 0, 0, 40, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 42,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 27
-        0, 0, 0, 53, 0, 0, 0, 0, 55, -190, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -190, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        41, 0, 0, 4, 0, 5, 0, 6, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
         // State 30
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 59, 0, 0, 0, 0, 61, -192, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, -192, 0,
         // State 32
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 34
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 36
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 37
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 38
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 39
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 40
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 41
         -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 42
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 43
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 44
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 45
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 46
-        0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 47
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 48
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 49
-        0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 50
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 51
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0,
         // State 52
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 54
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 55
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 56
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 57
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 58
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 59
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 60
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 61
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 62
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 63
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 64
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 65
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 66
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 67
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 68
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 69
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 70
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 71
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 72
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 73
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -356652,7 +369966,7 @@
         // State 0
         0,
         // State 1
-        -164,
+        -166,
         // State 2
         0,
         // State 3
@@ -356662,7 +369976,7 @@
         // State 5
         0,
         // State 6
-        -163,
+        -165,
         // State 7
         0,
         // State 8
@@ -356706,69 +370020,69 @@
         // State 27
         0,
         // State 28
-        -117,
+        0,
         // State 29
-        -221,
+        0,
         // State 30
-        -197,
+        0,
         // State 31
-        -211,
+        0,
         // State 32
-        -112,
+        0,
         // State 33
-        -195,
+        -117,
         // State 34
-        -196,
+        -223,
         // State 35
-        0,
+        -199,
         // State 36
-        0,
+        -213,
         // State 37
-        -209,
+        -112,
         // State 38
-        -138,
+        -197,
         // State 39
-        -208,
+        -198,
         // State 40
-        -210,
+        0,
         // State 41
         0,
         // State 42
-        -167,
+        -211,
         // State 43
-        -116,
+        -138,
         // State 44
-        -114,
+        -210,
         // State 45
-        0,
+        -212,
         // State 46
         0,
         // State 47
-        -115,
+        -169,
         // State 48
-        -168,
+        -116,
         // State 49
-        0,
+        -114,
         // State 50
-        -165,
+        0,
         // State 51
-        -113,
+        0,
         // State 52
         0,
         // State 53
-        -194,
+        -115,
         // State 54
-        0,
+        -170,
         // State 55
         0,
         // State 56
-        0,
+        -167,
         // State 57
-        0,
+        -113,
         // State 58
         0,
         // State 59
-        0,
+        -196,
         // State 60
         0,
         // State 61
@@ -356788,13 +370102,13 @@
         // State 68
         0,
         // State 69
-        -198,
+        0,
         // State 70
-        -124,
+        0,
         // State 71
         0,
         // State 72
-        -166,
+        0,
         // State 73
         0,
         // State 74
@@ -356802,45 +370116,93 @@
         // State 75
         0,
         // State 76
-        0,
+        -200,
         // State 77
-        0,
+        -124,
         // State 78
         0,
         // State 79
-        0,
+        -168,
         // State 80
         0,
         // State 81
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 15,
-            30 => 25,
+            30 => 26,
+            33 => 27,
             37 => 19,
             38 => 20,
             39 => 18,
-            41 => 49,
-            45 => 74,
+            41 => 55,
+            45 => 81,
+            46 => match state {
+                30 => 100,
+                32 => 102,
+                _ => 85,
+            },
             49 => match state {
                 7 => 16,
                 9 => 17,
                 15 => 22,
-                26 => 27,
+                29 => 31,
                 _ => 11,
             },
-            50 => 28,
+            50 => 33,
             51 => match state {
-                0 => 29,
-                2 => 43,
-                3 => 44,
-                5 => 47,
-                10 => 51,
-                19 => 73,
-                _ => 45,
+                0 => 34,
+                2 => 48,
+                3 => 49,
+                5 => 53,
+                10 => 57,
+                19 => 80,
+                _ => 50,
             },
             52 => match state {
                 20 => 24,
@@ -356850,31 +370212,39 @@
                 18 => 23,
                 _ => 13,
             },
-            55 => 30,
+            55 => 35,
             60 => match state {
-                4 | 26 => 14,
-                8 => 50,
-                21 | 25 => 75,
+                4 | 29 => 14,
+                8 => 56,
+                21 | 26 => 82,
+                25 | 27 | 30 | 32 => 86,
+                28 => 94,
                 _ => 1,
             },
-            71 => 31,
-            72 => match state {
-                6 => 48,
-                _ => 42,
-            },
-            73 => 6,
-            82 => match state {
-                26 => 82,
-                _ => 46,
+            62 => 51,
+            72 => 36,
+            73 => match state {
+                6 => 54,
+                _ => 47,
             },
+            74 => 6,
+            76 => 28,
             83 => match state {
-                25 => 78,
-                _ => 76,
+                29 => 98,
+                _ => 52,
             },
-            85 => 32,
-            86 => 33,
-            89 => 2,
-            90 => 34,
+            84 => match state {
+                26 => 89,
+                _ => 83,
+            },
+            86 => 37,
+            87 => 38,
+            88 => match state {
+                27 => 92,
+                _ => 87,
+            },
+            90 => 2,
+            91 => 39,
             _ => 0,
         }
     }
@@ -357990,19 +371360,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -358014,37 +371384,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -358056,7 +371426,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -358068,7 +371438,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -358086,43 +371456,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -358140,19 +371510,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -358164,7 +371534,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -358176,7 +371546,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -358188,25 +371558,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -358219,108 +371589,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -358332,43 +371702,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -358380,14 +371750,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -358405,238 +371775,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => __state_machine::SimulatedReduce::Accept,
             221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 101,
+                    nonterminal_produced: 100,
                 }
             }
-            222 => {
+            222 => __state_machine::SimulatedReduce::Accept,
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -359373,18 +372761,18 @@
                 __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             220 => {
-                // __Expression1 = Expression1 => ActionFn(17);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action17::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             221 => {
                 __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             222 => {
-                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression1 = Expression1 => ActionFn(18);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action18::<>(__sym0);
+                return Some(Ok(__nt));
             }
             223 => {
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -359464,6 +372852,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -360114,10 +373511,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -360128,11 +373525,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -360143,11 +373540,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -360158,13 +373555,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -360175,11 +373572,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -360190,10 +373587,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -360204,11 +373601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -360219,10 +373616,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -360233,11 +373630,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -360248,10 +373645,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -360262,13 +373659,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -360279,13 +373676,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -360296,10 +373693,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -360310,14 +373707,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -360328,14 +373725,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -360346,10 +373743,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -360360,13 +373757,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -360377,13 +373774,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -360394,10 +373791,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -360408,14 +373805,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -360426,14 +373823,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -360444,10 +373841,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -360458,13 +373855,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -360475,10 +373872,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -360489,11 +373886,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -360504,13 +373901,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -360521,14 +373918,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -360539,13 +373936,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -360556,10 +373953,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -360570,11 +373967,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -360585,13 +373982,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -360602,14 +373999,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -360620,13 +374017,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -360637,10 +374034,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -360651,11 +374048,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -360666,13 +374063,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -360683,14 +374080,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -360701,13 +374098,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -360718,10 +374115,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -360732,11 +374129,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -360747,13 +374144,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -360764,14 +374161,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -360782,13 +374179,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -360799,10 +374196,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -360813,11 +374210,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -360828,13 +374225,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -360845,14 +374242,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -360863,13 +374260,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -360880,10 +374277,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -360894,11 +374291,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -360909,13 +374306,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -360926,14 +374323,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -360944,13 +374341,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -360961,10 +374358,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -360975,11 +374372,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -360990,13 +374387,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -361007,14 +374404,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -361025,10 +374422,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -361039,10 +374436,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -361053,14 +374450,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -361071,7 +374468,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -361079,7 +374476,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -361090,14 +374487,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -361108,7 +374505,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -361116,7 +374513,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -361127,11 +374524,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361142,11 +374539,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361157,11 +374554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361172,11 +374569,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361187,11 +374584,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361202,11 +374599,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361217,11 +374614,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361232,11 +374629,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -361247,11 +374644,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -361262,11 +374659,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -361277,11 +374674,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -361292,11 +374689,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -361307,11 +374704,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -361322,11 +374719,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -361337,11 +374734,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -361352,11 +374749,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -361367,14 +374764,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -361385,11 +374782,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -361400,10 +374797,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -361414,13 +374811,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -361431,11 +374828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -361446,11 +374843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -361461,10 +374858,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -361475,13 +374872,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -361492,11 +374889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -361507,11 +374904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -361522,10 +374919,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -361536,13 +374933,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -361553,11 +374950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -361568,11 +374965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -361583,10 +374980,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -361597,13 +374994,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -361614,11 +375011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -361629,11 +375026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -361644,10 +375041,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -361658,13 +375055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -361675,11 +375072,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -361690,11 +375087,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -361705,10 +375102,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -361719,13 +375116,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -361736,11 +375133,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -361751,7 +375148,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -361762,7 +375159,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -361773,11 +375170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -361788,10 +375185,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -361802,13 +375199,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -361819,11 +375216,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -361834,14 +375231,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -361852,11 +375249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -361867,11 +375264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -361882,14 +375279,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -361900,13 +375297,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -361917,13 +375314,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -361934,13 +375331,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -361951,11 +375348,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -361966,14 +375363,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -361984,11 +375381,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -361999,14 +375396,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -362017,11 +375414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -362032,11 +375429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -362047,10 +375444,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -362061,7 +375458,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -362069,7 +375466,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -362080,14 +375477,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -362098,11 +375495,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -362113,10 +375510,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -362127,7 +375524,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -362136,7 +375533,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -362147,7 +375544,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -362158,7 +375555,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -362169,7 +375566,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -362183,7 +375580,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -362194,7 +375591,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -362206,7 +375603,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -362217,7 +375614,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -362230,7 +375627,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -362241,7 +375638,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -362252,7 +375649,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -362263,7 +375660,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -362276,7 +375673,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -362287,7 +375684,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -362298,7 +375695,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -362309,7 +375706,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -362321,7 +375718,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -362332,7 +375729,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -362342,7 +375739,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -362353,11 +375750,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -362368,11 +375765,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -362383,10 +375780,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -362397,7 +375794,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -362406,36 +375838,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -362445,36 +375877,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -362485,18 +375917,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -362506,18 +375938,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -362528,18 +375960,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -362549,143 +375981,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -362695,18 +376127,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -362715,412 +376147,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -363132,18 +376564,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -363152,262 +376584,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -363416,18 +376848,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -363435,373 +376867,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -363814,264 +377246,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -364084,52 +377531,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Expression1::Expression1Parser;
@@ -364218,171 +377665,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 1
-        0, 44, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 47, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,
+        0, 49, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0,
         // State 2
-        0, -164, -164, -164, -164, 10, -164, -164, -164, -164, -164, 0, 11, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 12, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 10, -166, -166, -166, -166, -166, 0, 11, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 12, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 3
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 4
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 13, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 13, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 5
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 6
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 7
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 8
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 11, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 12, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 11, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 12, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 9
-        37, 0, 0, 5, 0, 6, -82, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, -82, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 12
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 13
-        0, 0, 0, 62, 0, 0, 63, 0, 64, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+        0, 0, 0, 68, 0, 0, 69, 0, 70, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
         // State 14
-        0, 44, -121, -121, 45, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 46, 47, 0, 48, 49, 50, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 51, -121, 0,
+        0, 49, -121, -121, 50, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 56, -121, 0,
         // State 15
-        0, 0, 68, -111, 0, 0, -111, 69, -111, -111, -111, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 74, -111, 0, 0, -111, 75, -111, -111, -111, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 16
-        0, -164, -164, -164, -164, 10, -164, -164, -164, -164, -164, 0, 11, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 12, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 10, -166, -166, -166, -166, -166, 0, 11, 0, -166, 0, 77, 0, -166, -166, 0, -166, -166, -166, 12, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 17
-        37, 0, 0, 5, 0, 6, -84, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, -84, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 18
-        0, 0, 0, 62, 0, 0, -81, 0, 64, 73, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+        0, 0, 0, 68, 0, 0, -81, 0, 70, 80, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
         // State 19
-        0, 0, 0, 62, 0, 0, 0, 0, 64, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+        0, 0, 0, 68, 0, 0, 0, 0, 70, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
         // State 20
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 21
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 23
-        0, 0, 0, 62, 0, 0, -83, 0, 64, 78, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0,
+        0, 0, 0, 68, 0, 0, -83, 0, 70, 85, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0,
         // State 24
-        0, 0, 68, -110, 0, 0, -110, 69, -110, -110, -110, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 74, -110, 0, 0, -110, 75, -110, -110, -110, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 25
-        0, 44, -120, -120, 45, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 46, 47, 0, 48, 49, 50, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 51, -120, 0,
+        0, 49, -120, -120, 50, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 56, -120, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        37, 0, 0, 5, 0, 6, 0, 7, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 28
-        0, 0, 0, 62, 0, 0, 0, 0, 64, -190, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, -190, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        42, 0, 0, 5, 0, 6, 0, 7, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 31
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 68, 0, 0, 0, 0, 70, -192, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, -192, 0,
         // State 33
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 35
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 36
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 37
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 38
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 39
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 40
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 41
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 42
         -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 43
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 44
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 45
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 46
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 47
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 48
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 49
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 50
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 51
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 52
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 53
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 54
-        0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 55
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 56
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 57
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 58
-        0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 59
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0,
         // State 60
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 61
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 62
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 63
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 64
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 65
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 66
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 67
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 68
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 69
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 70
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 71
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 72
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 73
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -364391,9 +377880,9 @@
         // State 0
         0,
         // State 1
-        -222,
+        -224,
         // State 2
-        -164,
+        -166,
         // State 3
         0,
         // State 4
@@ -364405,7 +377894,7 @@
         // State 7
         0,
         // State 8
-        -163,
+        -165,
         // State 9
         0,
         // State 10
@@ -364447,41 +377936,41 @@
         // State 28
         0,
         // State 29
-        -117,
+        0,
         // State 30
-        -119,
+        0,
         // State 31
-        -197,
+        0,
         // State 32
-        -211,
+        0,
         // State 33
-        -112,
+        0,
         // State 34
-        -195,
+        -117,
         // State 35
-        -196,
+        -119,
         // State 36
-        0,
+        -199,
         // State 37
-        0,
+        -213,
         // State 38
-        -209,
+        -112,
         // State 39
-        -138,
+        -197,
         // State 40
-        -208,
+        -198,
         // State 41
-        -210,
+        0,
         // State 42
         0,
         // State 43
-        0,
+        -211,
         // State 44
-        0,
+        -138,
         // State 45
-        0,
+        -210,
         // State 46
-        0,
+        -212,
         // State 47
         0,
         // State 48
@@ -364491,51 +377980,51 @@
         // State 50
         0,
         // State 51
-        -167,
+        0,
         // State 52
-        -116,
+        0,
         // State 53
-        -114,
+        0,
         // State 54
         0,
         // State 55
-        -115,
+        0,
         // State 56
-        -118,
+        -169,
         // State 57
-        -168,
+        -116,
         // State 58
-        0,
+        -114,
         // State 59
-        -165,
+        0,
         // State 60
-        -113,
-        // State 61
         0,
+        // State 61
+        -115,
         // State 62
-        -194,
+        -118,
         // State 63
-        0,
+        -170,
         // State 64
         0,
         // State 65
-        0,
+        -167,
         // State 66
-        0,
+        -113,
         // State 67
         0,
         // State 68
-        0,
+        -196,
         // State 69
         0,
         // State 70
-        -198,
+        0,
         // State 71
-        -124,
+        0,
         // State 72
         0,
         // State 73
-        -166,
+        0,
         // State 74
         0,
         // State 75
@@ -364543,42 +378032,90 @@
         // State 76
         0,
         // State 77
-        0,
+        -200,
         // State 78
-        0,
+        -124,
         // State 79
         0,
         // State 80
-        0,
+        -168,
         // State 81
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 17,
-            30 => 26,
+            30 => 27,
+            33 => 28,
             37 => 7,
             38 => 21,
             39 => 20,
-            41 => 58,
-            45 => 74,
+            41 => 64,
+            45 => 81,
+            46 => match state {
+                31 => 100,
+                33 => 102,
+                _ => 85,
+            },
             49 => match state {
                 9 => 18,
                 11 => 19,
                 17 => 23,
-                27 => 28,
+                30 => 32,
                 _ => 13,
             },
-            50 => 29,
+            50 => 34,
             51 => match state {
-                3 => 52,
-                4 => 53,
-                6 => 55,
-                7 => 56,
-                12 => 60,
-                _ => 30,
+                3 => 57,
+                4 => 58,
+                6 => 61,
+                7 => 62,
+                12 => 66,
+                _ => 35,
             },
             52 => match state {
                 0 => 1,
@@ -364589,31 +378126,39 @@
                 20 => 24,
                 _ => 15,
             },
-            55 => 31,
+            55 => 36,
             60 => match state {
-                5 | 27 => 16,
-                10 => 59,
-                22 | 26 => 75,
+                5 | 30 => 16,
+                10 => 65,
+                22 | 27 => 82,
+                26 | 28 | 31 | 33 => 86,
+                29 => 94,
                 _ => 2,
             },
-            71 => 32,
-            72 => match state {
-                8 => 57,
-                _ => 51,
-            },
-            73 => 8,
-            82 => match state {
-                27 => 82,
-                _ => 54,
+            62 => 59,
+            72 => 37,
+            73 => match state {
+                8 => 63,
+                _ => 56,
             },
+            74 => 8,
+            76 => 29,
             83 => match state {
-                26 => 78,
-                _ => 76,
+                30 => 98,
+                _ => 60,
             },
-            85 => 33,
-            86 => 34,
-            89 => 3,
-            90 => 35,
+            84 => match state {
+                27 => 89,
+                _ => 83,
+            },
+            86 => 38,
+            87 => 39,
+            88 => match state {
+                28 => 92,
+                _ => 87,
+            },
+            90 => 3,
+            91 => 40,
             _ => 0,
         }
     }
@@ -365729,19 +379274,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -365753,37 +379298,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -365795,7 +379340,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -365807,7 +379352,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -365825,43 +379370,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -365879,19 +379424,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -365903,7 +379448,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -365915,7 +379460,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -365927,25 +379472,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -365958,108 +379503,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -366071,43 +379616,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -366119,14 +379664,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -366144,238 +379689,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => __state_machine::SimulatedReduce::Accept,
             222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 102,
+                    nonterminal_produced: 101,
                 }
             }
-            223 => {
+            223 => __state_machine::SimulatedReduce::Accept,
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -367115,18 +380678,18 @@
                 __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             221 => {
-                // __Expression2 = Expression2 => ActionFn(18);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action18::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             222 => {
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             223 => {
-                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression2 = Expression2 => ActionFn(19);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action19::<>(__sym0);
+                return Some(Ok(__nt));
             }
             224 => {
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -367203,6 +380766,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -367853,10 +381425,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -367867,11 +381439,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -367882,11 +381454,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -367897,13 +381469,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -367914,11 +381486,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -367929,10 +381501,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -367943,11 +381515,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -367958,10 +381530,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -367972,11 +381544,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -367987,10 +381559,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -368001,13 +381573,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -368018,13 +381590,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -368035,10 +381607,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -368049,14 +381621,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -368067,14 +381639,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -368085,10 +381657,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -368099,13 +381671,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -368116,13 +381688,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -368133,10 +381705,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -368147,14 +381719,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -368165,14 +381737,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -368183,10 +381755,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -368197,13 +381769,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -368214,10 +381786,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -368228,11 +381800,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -368243,13 +381815,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -368260,14 +381832,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -368278,13 +381850,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -368295,10 +381867,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -368309,11 +381881,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -368324,13 +381896,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -368341,14 +381913,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -368359,13 +381931,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -368376,10 +381948,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -368390,11 +381962,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -368405,13 +381977,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -368422,14 +381994,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -368440,13 +382012,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -368457,10 +382029,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -368471,11 +382043,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -368486,13 +382058,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -368503,14 +382075,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -368521,13 +382093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -368538,10 +382110,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -368552,11 +382124,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -368567,13 +382139,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -368584,14 +382156,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -368602,13 +382174,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -368619,10 +382191,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -368633,11 +382205,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -368648,13 +382220,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -368665,14 +382237,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -368683,13 +382255,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -368700,10 +382272,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -368714,11 +382286,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -368729,13 +382301,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -368746,14 +382318,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -368764,10 +382336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -368778,10 +382350,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -368792,14 +382364,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -368810,7 +382382,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -368818,7 +382390,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -368829,14 +382401,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -368847,7 +382419,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -368855,7 +382427,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -368866,11 +382438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368881,11 +382453,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368896,11 +382468,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368911,11 +382483,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368926,11 +382498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368941,11 +382513,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368956,11 +382528,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368971,11 +382543,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -368986,11 +382558,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -369001,11 +382573,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -369016,11 +382588,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -369031,11 +382603,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -369046,11 +382618,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -369061,11 +382633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -369076,11 +382648,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -369091,11 +382663,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -369106,14 +382678,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -369124,11 +382696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -369139,10 +382711,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -369153,13 +382725,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -369170,11 +382742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -369185,11 +382757,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -369200,10 +382772,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -369214,13 +382786,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -369231,11 +382803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -369246,11 +382818,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -369261,10 +382833,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -369275,13 +382847,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -369292,11 +382864,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -369307,11 +382879,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -369322,10 +382894,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -369336,13 +382908,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -369353,11 +382925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -369368,11 +382940,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -369383,10 +382955,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -369397,13 +382969,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -369414,11 +382986,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -369429,11 +383001,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -369444,10 +383016,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -369458,13 +383030,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -369475,11 +383047,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -369490,7 +383062,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -369501,7 +383073,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -369512,11 +383084,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -369527,10 +383099,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -369541,13 +383113,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -369558,11 +383130,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -369573,14 +383145,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -369591,11 +383163,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -369606,11 +383178,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -369621,14 +383193,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -369639,13 +383211,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -369656,13 +383228,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -369673,13 +383245,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -369690,11 +383262,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -369705,14 +383277,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -369723,11 +383295,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -369738,14 +383310,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -369756,11 +383328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -369771,11 +383343,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -369786,10 +383358,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -369800,7 +383372,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -369808,7 +383380,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -369819,14 +383391,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -369837,11 +383409,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -369852,10 +383424,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -369866,7 +383438,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -369875,7 +383447,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -369886,7 +383458,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -369897,7 +383469,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -369908,7 +383480,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -369922,7 +383494,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -369933,7 +383505,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -369945,7 +383517,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -369956,7 +383528,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -369969,7 +383541,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -369980,7 +383552,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -369991,7 +383563,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -370002,7 +383574,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -370015,7 +383587,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -370026,7 +383598,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -370037,7 +383609,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -370048,7 +383620,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -370060,7 +383632,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -370071,7 +383643,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -370081,7 +383653,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -370092,11 +383664,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -370107,11 +383679,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -370122,10 +383694,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -370136,7 +383708,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -370145,36 +383752,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -370184,36 +383791,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -370224,18 +383831,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -370245,18 +383852,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -370267,18 +383874,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -370288,143 +383895,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -370434,18 +384041,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -370454,412 +384061,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -370871,18 +384478,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -370891,262 +384498,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -371155,18 +384762,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -371174,200 +384781,185 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
-    }
-    pub(crate) fn __reduce213<
-    >(
-        __lookahead_start: Option<&usize>,
-        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
-        _: core::marker::PhantomData<()>,
-    ) -> (usize, usize)
-    {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
-        let __sym0 = __pop_Variant27(__symbols);
-        let __start = __sym0.0;
-        let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 93)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
@@ -371375,14 +384967,14 @@
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 94)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
@@ -371390,74 +384982,74 @@
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 95)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
-        let __sym0 = __pop_Variant10(__symbols);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
+        let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
+        let __nt = super::__action24::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 96)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
-        let __sym0 = __pop_Variant32(__symbols);
+        // __Block = Block => ActionFn(6);
+        let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant32(__nt), __end));
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (1, 97)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Constant = Constant => ActionFn(32);
+        let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        let __nt = super::__action32::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (1, 98)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 99)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
@@ -371472,75 +385064,90 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 101)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __Expression3 = Expression3 => ActionFn(20);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action20::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 103)
+    }
+    pub(crate) fn __reduce225<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -371553,264 +385160,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -371823,52 +385445,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Expression2::Expression2Parser;
@@ -371957,171 +385579,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 1
-        0, 44, -121, -121, 45, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 46, 47, 0, 48, 49, 50, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 51, -121, 0,
+        0, 49, -121, -121, 50, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 56, -121, 0,
         // State 2
-        0, 0, 52, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 57, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, -164, -164, -164, -164, 12, -164, -164, -164, -164, -164, 0, 13, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 14, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 12, -166, -166, -166, -166, -166, 0, 13, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 14, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 4
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 5
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 15, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 15, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 6
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 7
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 8
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 9
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 10
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 13, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 14, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 13, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 14, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 11
-        37, 0, 0, 6, 0, 7, -82, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, -82, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 14
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 15
-        0, 0, 0, 65, 0, 0, 66, 0, 67, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
+        0, 0, 0, 71, 0, 0, 72, 0, 73, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
         // State 16
-        0, 0, 52, -111, 0, 0, -111, 53, -111, -111, -111, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 57, -111, 0, 0, -111, 58, -111, -111, -111, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 17
-        0, -164, -164, -164, -164, 12, -164, -164, -164, -164, -164, 0, 13, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 14, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 12, -166, -166, -166, -166, -166, 0, 13, 0, -166, 0, 77, 0, -166, -166, 0, -166, -166, -166, 14, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 18
-        0, 44, -120, -120, 45, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 46, 47, 0, 48, 49, 50, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 51, -120, 0,
+        0, 49, -120, -120, 50, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 51, 52, 0, 53, 54, 55, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 56, -120, 0,
         // State 19
-        37, 0, 0, 6, 0, 7, -84, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, -84, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 20
-        0, 0, 0, 65, 0, 0, -81, 0, 67, 73, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
+        0, 0, 0, 71, 0, 0, -81, 0, 73, 80, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
         // State 21
-        0, 0, 0, 65, 0, 0, 0, 0, 67, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
+        0, 0, 0, 71, 0, 0, 0, 0, 73, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
         // State 22
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 24
-        0, 0, 0, 65, 0, 0, -83, 0, 67, 78, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0,
+        0, 0, 0, 71, 0, 0, -83, 0, 73, 85, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
         // State 25
-        0, 0, 52, -110, 0, 0, -110, 53, -110, -110, -110, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 57, -110, 0, 0, -110, 58, -110, -110, -110, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        37, 0, 0, 6, 0, 7, 0, 8, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 43,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 28
-        0, 0, 0, 65, 0, 0, 0, 0, 67, -190, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, -190, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        42, 0, 0, 6, 0, 7, 0, 8, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 45, 0, 0, 46, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 48,
         // State 31
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 71, 0, 0, 0, 0, 73, -192, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, -192, 0,
         // State 33
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 35
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 36
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 37
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 38
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 39
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 40
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 41
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 42
         -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 43
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 44
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 45
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 46
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 47
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 48
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 49
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 50
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 51
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 52
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 53
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 54
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 55
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 56
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 57
-        0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 58
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 59
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 60
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 61
-        0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 62
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0,
         // State 63
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 65
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 66
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 67
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 68
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 69
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 70
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 71
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 72
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 73
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -372132,9 +385796,9 @@
         // State 1
         -121,
         // State 2
-        -223,
+        -225,
         // State 3
-        -164,
+        -166,
         // State 4
         0,
         // State 5
@@ -372148,7 +385812,7 @@
         // State 9
         0,
         // State 10
-        -163,
+        -165,
         // State 11
         0,
         // State 12
@@ -372186,41 +385850,41 @@
         // State 28
         0,
         // State 29
-        -117,
+        0,
         // State 30
-        -119,
+        0,
         // State 31
-        -197,
+        0,
         // State 32
-        -211,
+        0,
         // State 33
-        -112,
+        0,
         // State 34
-        -195,
+        -117,
         // State 35
-        -196,
+        -119,
         // State 36
-        0,
+        -199,
         // State 37
-        0,
+        -213,
         // State 38
-        -209,
+        -112,
         // State 39
-        -138,
+        -197,
         // State 40
-        -208,
+        -198,
         // State 41
-        -210,
+        0,
         // State 42
         0,
         // State 43
-        0,
+        -211,
         // State 44
-        0,
+        -138,
         // State 45
-        0,
+        -210,
         // State 46
-        0,
+        -212,
         // State 47
         0,
         // State 48
@@ -372236,45 +385900,45 @@
         // State 53
         0,
         // State 54
-        -167,
+        0,
         // State 55
-        -116,
+        0,
         // State 56
-        -114,
+        0,
         // State 57
         0,
         // State 58
-        -115,
+        0,
         // State 59
-        -118,
+        -169,
         // State 60
-        -168,
+        -116,
         // State 61
-        0,
+        -114,
         // State 62
-        -165,
+        0,
         // State 63
-        -113,
-        // State 64
         0,
+        // State 64
+        -115,
         // State 65
-        -194,
+        -118,
         // State 66
-        0,
+        -170,
         // State 67
         0,
         // State 68
-        0,
+        -167,
         // State 69
-        0,
+        -113,
         // State 70
-        -198,
+        0,
         // State 71
-        -124,
+        -196,
         // State 72
         0,
         // State 73
-        -166,
+        0,
         // State 74
         0,
         // State 75
@@ -372282,42 +385946,90 @@
         // State 76
         0,
         // State 77
-        0,
+        -200,
         // State 78
-        0,
+        -124,
         // State 79
         0,
         // State 80
-        0,
+        -168,
         // State 81
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 19,
-            30 => 26,
+            30 => 27,
+            33 => 28,
             37 => 8,
             38 => 9,
             39 => 22,
-            41 => 61,
-            45 => 74,
+            41 => 67,
+            45 => 81,
+            46 => match state {
+                31 => 100,
+                33 => 102,
+                _ => 85,
+            },
             49 => match state {
                 11 => 20,
                 13 => 21,
                 19 => 24,
-                27 => 28,
+                30 => 32,
                 _ => 15,
             },
-            50 => 29,
+            50 => 34,
             51 => match state {
-                4 => 55,
-                5 => 56,
-                7 => 58,
-                8 => 59,
-                14 => 63,
-                _ => 30,
+                4 => 60,
+                5 => 61,
+                7 => 64,
+                8 => 65,
+                14 => 69,
+                _ => 35,
             },
             52 => match state {
                 9 => 18,
@@ -372328,31 +386040,39 @@
                 22 => 25,
                 _ => 16,
             },
-            55 => 31,
+            55 => 36,
             60 => match state {
-                6 | 27 => 17,
-                12 => 62,
-                23 | 26 => 75,
+                6 | 30 => 17,
+                12 => 68,
+                23 | 27 => 82,
+                26 | 28 | 31 | 33 => 86,
+                29 => 94,
                 _ => 3,
             },
-            71 => 32,
-            72 => match state {
-                10 => 60,
-                _ => 54,
-            },
-            73 => 10,
-            82 => match state {
-                27 => 82,
-                _ => 57,
+            62 => 62,
+            72 => 37,
+            73 => match state {
+                10 => 66,
+                _ => 59,
             },
+            74 => 10,
+            76 => 29,
             83 => match state {
-                26 => 78,
-                _ => 76,
+                30 => 98,
+                _ => 63,
             },
-            85 => 33,
-            86 => 34,
-            89 => 4,
-            90 => 35,
+            84 => match state {
+                27 => 89,
+                _ => 83,
+            },
+            86 => 38,
+            87 => 39,
+            88 => match state {
+                28 => 92,
+                _ => 87,
+            },
+            90 => 4,
+            91 => 40,
             _ => 0,
         }
     }
@@ -373468,19 +387188,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -373492,37 +387212,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -373534,7 +387254,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -373546,7 +387266,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -373564,43 +387284,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -373618,19 +387338,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -373642,7 +387362,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -373654,7 +387374,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -373666,25 +387386,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -373697,108 +387417,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -373810,43 +387530,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -373858,14 +387578,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -373883,238 +387603,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => __state_machine::SimulatedReduce::Accept,
             223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 103,
+                    nonterminal_produced: 102,
                 }
             }
-            224 => {
+            224 => __state_machine::SimulatedReduce::Accept,
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -374857,18 +388595,18 @@
                 __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             222 => {
-                // __Expression3 = Expression3 => ActionFn(19);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action19::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             223 => {
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             224 => {
-                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Expression3 = Expression3 => ActionFn(20);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action20::<>(__sym0);
+                return Some(Ok(__nt));
             }
             225 => {
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -374942,6 +388680,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -375592,10 +389339,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -375606,11 +389353,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -375621,11 +389368,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -375636,13 +389383,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -375653,11 +389400,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -375668,10 +389415,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -375682,11 +389429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -375697,10 +389444,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -375711,11 +389458,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -375726,10 +389473,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -375740,13 +389487,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -375757,13 +389504,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -375774,10 +389521,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -375788,14 +389535,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -375806,14 +389553,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -375824,10 +389571,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -375838,13 +389585,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -375855,13 +389602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -375872,10 +389619,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -375886,14 +389633,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -375904,14 +389651,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -375922,10 +389669,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -375936,13 +389683,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -375953,10 +389700,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -375967,11 +389714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -375982,13 +389729,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -375999,14 +389746,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -376017,13 +389764,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -376034,10 +389781,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -376048,11 +389795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -376063,13 +389810,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -376080,14 +389827,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -376098,13 +389845,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -376115,10 +389862,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -376129,11 +389876,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -376144,13 +389891,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -376161,14 +389908,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -376179,13 +389926,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -376196,10 +389943,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -376210,11 +389957,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -376225,13 +389972,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -376242,14 +389989,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -376260,13 +390007,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -376277,10 +390024,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -376291,11 +390038,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -376306,13 +390053,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -376323,14 +390070,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -376341,13 +390088,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -376358,10 +390105,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -376372,11 +390119,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -376387,13 +390134,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -376404,14 +390151,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -376422,13 +390169,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -376439,10 +390186,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -376453,11 +390200,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -376468,13 +390215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -376485,14 +390232,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -376503,10 +390250,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -376517,10 +390264,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -376531,14 +390278,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -376549,7 +390296,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -376557,7 +390304,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -376568,14 +390315,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -376586,7 +390333,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -376594,7 +390341,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -376605,11 +390352,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376620,11 +390367,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376635,11 +390382,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376650,11 +390397,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376665,11 +390412,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376680,11 +390427,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376695,11 +390442,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376710,11 +390457,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -376725,11 +390472,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -376740,11 +390487,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -376755,11 +390502,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -376770,11 +390517,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -376785,11 +390532,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -376800,11 +390547,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -376815,11 +390562,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -376830,11 +390577,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -376845,14 +390592,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -376863,11 +390610,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -376878,10 +390625,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -376892,13 +390639,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -376909,11 +390656,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -376924,11 +390671,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -376939,10 +390686,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -376953,13 +390700,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -376970,11 +390717,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -376985,11 +390732,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -377000,10 +390747,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -377014,13 +390761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -377031,11 +390778,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -377046,11 +390793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -377061,10 +390808,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -377075,13 +390822,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -377092,11 +390839,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -377107,11 +390854,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -377122,10 +390869,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -377136,13 +390883,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -377153,11 +390900,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -377168,11 +390915,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -377183,10 +390930,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -377197,13 +390944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -377214,11 +390961,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -377229,7 +390976,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -377240,7 +390987,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -377251,11 +390998,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -377266,10 +391013,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -377280,13 +391027,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -377297,11 +391044,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -377312,14 +391059,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -377330,11 +391077,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -377345,11 +391092,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -377360,14 +391107,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -377378,13 +391125,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -377395,13 +391142,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -377412,13 +391159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -377429,11 +391176,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -377444,14 +391191,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -377462,11 +391209,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -377477,14 +391224,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -377495,11 +391242,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -377510,11 +391257,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -377525,10 +391272,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -377539,7 +391286,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -377547,7 +391294,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -377558,14 +391305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -377576,11 +391323,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -377591,10 +391338,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -377605,7 +391352,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -377614,7 +391361,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -377625,7 +391372,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -377636,7 +391383,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -377647,7 +391394,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -377661,7 +391408,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -377672,7 +391419,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -377684,7 +391431,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -377695,7 +391442,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -377708,7 +391455,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -377719,7 +391466,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -377730,7 +391477,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -377741,7 +391488,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -377754,7 +391501,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -377765,7 +391512,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -377776,7 +391523,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -377787,7 +391534,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -377799,7 +391546,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -377810,7 +391557,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -377820,7 +391567,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -377831,11 +391578,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -377846,11 +391593,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -377861,10 +391608,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -377875,7 +391622,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -377884,36 +391666,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -377923,36 +391705,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -377963,18 +391745,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -377984,18 +391766,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -378006,18 +391788,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -378027,143 +391809,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -378173,18 +391955,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -378193,412 +391975,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -378610,18 +392392,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -378630,262 +392412,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -378894,18 +392676,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -378913,373 +392695,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -379292,264 +393074,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -379562,52 +393359,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Expression3::Expression3Parser;
@@ -379696,173 +393493,215 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        40, 0, 0, 9, 0, 10, -82, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, -82, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 2
-        40, 0, 0, 9, 0, 10, -84, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, -84, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 3
-        0, 0, 0, 47, 0, 0, -81, 0, 48, 49, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 0, 0, 52, 0, 0, -81, 0, 53, 54, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
         // State 4
-        0, 53, -121, -121, 54, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 60, -121, 0,
+        0, 58, -121, -121, 59, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 60, 61, 0, 62, 63, 64, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 65, -121, 0,
         // State 5
-        0, 0, 61, -111, 0, 0, -111, 62, -111, -111, -111, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 66, -111, 0, 0, -111, 67, -111, -111, -111, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 6
-        0, -164, -164, -164, -164, 2, -164, -164, -164, -164, -164, 0, 17, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 18, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 2, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 18, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 7
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 8
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 19, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 19, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 9
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 10
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 11
-        0, 0, 0, 47, 0, 0, -83, 0, 48, 69, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 0, 0, 52, 0, 0, -83, 0, 53, 75, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
         // State 12
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 13
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 14
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 15
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 17, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 18, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 17, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 18, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 18
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 19
-        0, 0, 0, 47, 0, 0, 74, 0, 48, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 0, 0, 52, 0, 0, 80, 0, 53, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
         // State 20
-        0, -164, -164, -164, -164, 2, -164, -164, -164, -164, -164, 0, 17, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 18, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 2, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 81, 0, -166, -166, 0, -166, -166, -166, 18, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 21
-        0, 0, 61, -110, 0, 0, -110, 62, -110, -110, -110, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 66, -110, 0, 0, -110, 67, -110, -110, -110, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 22
-        0, 53, -120, -120, 54, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 60, -120, 0,
+        0, 58, -120, -120, 59, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 60, 61, 0, 62, 63, 64, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 65, -120, 0,
         // State 23
-        0, 0, 0, 47, 0, 0, 0, 0, 48, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        40, 0, 0, 9, 0, 10, 0, 11, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 27
-        0, 0, 0, 47, 0, 0, 0, 0, 48, -190, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, -190, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        45, 0, 0, 9, 0, 10, 0, 11, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 36, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 30
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, -192, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -192, 0,
         // State 32
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 36
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 37
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 38
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 39
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 40
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 41
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 42
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 43
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 44
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 45
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 46
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 47
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 48
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 49
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 50
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 51
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 52
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 53
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 54
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 55
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 56
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 57
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 58
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 59
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 60
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 61
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 62
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 63
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 64
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 65
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 66
-        0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 67
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 68
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 69
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 70
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 71
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 72
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 74
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 75
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0,
+        // State 84
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 100
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -379925,7 +393764,7 @@
         // State 27
         0,
         // State 28
-        -224,
+        0,
         // State 29
         0,
         // State 30
@@ -379935,7 +393774,7 @@
         // State 32
         0,
         // State 33
-        0,
+        -226,
         // State 34
         0,
         // State 35
@@ -379959,7 +393798,7 @@
         // State 44
         0,
         // State 45
-        -124,
+        0,
         // State 46
         0,
         // State 47
@@ -379969,7 +393808,7 @@
         // State 49
         0,
         // State 50
-        0,
+        -124,
         // State 51
         0,
         // State 52
@@ -380036,31 +393875,79 @@
         0,
         // State 83
         0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             15 => 2,
-            30 => 25,
+            30 => 26,
+            33 => 27,
             37 => 13,
             38 => 14,
             39 => 12,
-            41 => 31,
-            45 => 76,
+            41 => 36,
+            45 => 83,
+            46 => match state {
+                30 => 101,
+                32 => 103,
+                _ => 86,
+            },
             49 => match state {
                 2 => 11,
                 9 => 19,
                 17 => 23,
-                26 => 27,
+                29 => 31,
                 _ => 3,
             },
-            50 => 32,
+            50 => 37,
             51 => match state {
-                7 => 64,
-                8 => 65,
-                10 => 67,
-                13 => 69,
-                18 => 72,
-                _ => 33,
+                7 => 69,
+                8 => 70,
+                10 => 73,
+                13 => 75,
+                18 => 78,
+                _ => 38,
             },
             52 => match state {
                 14 => 22,
@@ -380071,34 +393958,42 @@
                 _ => 5,
             },
             55 => match state {
-                0 => 28,
-                _ => 34,
+                0 => 33,
+                _ => 39,
             },
             60 => match state {
-                9 | 26 => 20,
-                0 => 29,
-                16 => 71,
-                24..=25 => 77,
+                9 | 29 => 20,
+                0 => 34,
+                16 => 77,
+                24 | 26 => 84,
+                25 | 27 | 30 | 32 => 87,
+                28 => 95,
                 _ => 6,
             },
-            71 => 35,
-            72 => match state {
-                15 => 70,
-                _ => 63,
-            },
-            73 => 15,
-            82 => match state {
-                26 => 83,
-                _ => 66,
+            62 => 71,
+            72 => 40,
+            73 => match state {
+                15 => 76,
+                _ => 68,
             },
+            74 => 15,
+            76 => 28,
             83 => match state {
-                25 => 79,
-                _ => 78,
+                29 => 99,
+                _ => 72,
             },
-            85 => 36,
-            86 => 37,
-            89 => 7,
-            90 => 38,
+            84 => match state {
+                26 => 90,
+                _ => 85,
+            },
+            86 => 41,
+            87 => 42,
+            88 => match state {
+                27 => 93,
+                _ => 88,
+            },
+            90 => 7,
+            91 => 43,
             _ => 0,
         }
     }
@@ -381214,19 +395109,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -381238,37 +395133,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -381280,7 +395175,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -381292,7 +395187,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -381310,43 +395205,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -381364,19 +395259,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -381388,7 +395283,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -381400,7 +395295,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -381412,25 +395307,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -381443,108 +395338,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -381556,43 +395451,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -381604,14 +395499,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -381629,238 +395524,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => __state_machine::SimulatedReduce::Accept,
             224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 104,
+                    nonterminal_produced: 103,
                 }
             }
-            225 => {
+            225 => __state_machine::SimulatedReduce::Accept,
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -382606,18 +396519,18 @@
                 __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             223 => {
-                // __FnCallExpr = FnCallExpr => ActionFn(7);
-                let __sym0 = __pop_Variant34(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action7::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             224 => {
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             225 => {
-                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __FnCallExpr = FnCallExpr => ActionFn(8);
+                let __sym0 = __pop_Variant34(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action8::<>(__sym0);
+                return Some(Ok(__nt));
             }
             226 => {
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -382688,6 +396601,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -383338,10 +397260,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -383352,11 +397274,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -383367,11 +397289,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -383382,13 +397304,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -383399,11 +397321,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -383414,10 +397336,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -383428,11 +397350,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -383443,10 +397365,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -383457,11 +397379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -383472,10 +397394,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -383486,13 +397408,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -383503,13 +397425,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -383520,10 +397442,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -383534,14 +397456,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -383552,14 +397474,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -383570,10 +397492,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -383584,13 +397506,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -383601,13 +397523,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -383618,10 +397540,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -383632,14 +397554,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -383650,14 +397572,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -383668,10 +397590,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -383682,13 +397604,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -383699,10 +397621,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -383713,11 +397635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -383728,13 +397650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -383745,14 +397667,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -383763,13 +397685,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -383780,10 +397702,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -383794,11 +397716,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -383809,13 +397731,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -383826,14 +397748,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -383844,13 +397766,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -383861,10 +397783,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -383875,11 +397797,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -383890,13 +397812,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -383907,14 +397829,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -383925,13 +397847,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -383942,10 +397864,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -383956,11 +397878,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -383971,13 +397893,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -383988,14 +397910,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -384006,13 +397928,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -384023,10 +397945,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -384037,11 +397959,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -384052,13 +397974,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -384069,14 +397991,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -384087,13 +398009,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -384104,10 +398026,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -384118,11 +398040,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -384133,13 +398055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -384150,14 +398072,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -384168,13 +398090,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -384185,10 +398107,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -384199,11 +398121,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -384214,13 +398136,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -384231,14 +398153,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -384249,10 +398171,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -384263,10 +398185,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -384277,14 +398199,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -384295,7 +398217,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -384303,7 +398225,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -384314,14 +398236,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -384332,7 +398254,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -384340,7 +398262,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -384351,11 +398273,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384366,11 +398288,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384381,11 +398303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384396,11 +398318,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384411,11 +398333,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384426,11 +398348,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384441,11 +398363,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384456,11 +398378,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -384471,11 +398393,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -384486,11 +398408,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -384501,11 +398423,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -384516,11 +398438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -384531,11 +398453,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -384546,11 +398468,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -384561,11 +398483,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -384576,11 +398498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -384591,14 +398513,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -384609,11 +398531,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -384624,10 +398546,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -384638,13 +398560,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -384655,11 +398577,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -384670,11 +398592,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -384685,10 +398607,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -384699,13 +398621,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -384716,11 +398638,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -384731,11 +398653,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -384746,10 +398668,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -384760,13 +398682,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -384777,11 +398699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -384792,11 +398714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -384807,10 +398729,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -384821,13 +398743,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -384838,11 +398760,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -384853,11 +398775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -384868,10 +398790,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -384882,13 +398804,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -384899,11 +398821,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -384914,11 +398836,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -384929,10 +398851,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -384943,13 +398865,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -384960,11 +398882,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -384975,7 +398897,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -384986,7 +398908,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -384997,11 +398919,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -385012,10 +398934,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -385026,13 +398948,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -385043,11 +398965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -385058,14 +398980,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -385076,11 +398998,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -385091,11 +399013,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -385106,14 +399028,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -385124,13 +399046,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -385141,13 +399063,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -385158,13 +399080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -385175,11 +399097,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -385190,14 +399112,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -385208,11 +399130,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -385223,14 +399145,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -385241,11 +399163,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -385256,11 +399178,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -385271,10 +399193,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -385285,7 +399207,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -385293,7 +399215,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -385304,14 +399226,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -385322,11 +399244,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -385337,10 +399259,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -385351,7 +399273,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -385360,7 +399282,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -385371,7 +399293,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -385382,7 +399304,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -385393,7 +399315,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -385407,7 +399329,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -385418,7 +399340,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -385430,7 +399352,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -385441,7 +399363,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -385454,7 +399376,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -385465,7 +399387,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -385476,7 +399398,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -385487,7 +399409,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -385500,7 +399422,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -385511,7 +399433,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -385522,7 +399444,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -385533,7 +399455,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -385545,7 +399467,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -385556,7 +399478,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -385566,7 +399488,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -385577,11 +399499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -385592,11 +399514,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -385607,10 +399529,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -385621,7 +399543,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -385630,36 +399587,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -385669,36 +399626,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -385709,18 +399666,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -385730,18 +399687,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -385752,18 +399709,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -385773,143 +399730,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -385919,18 +399876,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -385939,412 +399896,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -386356,18 +400313,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -386376,262 +400333,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -386640,18 +400597,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -386659,373 +400616,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -387038,264 +400995,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -387308,52 +401280,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__FnCallExpr::FnCallExprParser;
@@ -387460,15 +401432,15 @@
         // State 8
         0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 10
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
@@ -387476,7 +401448,7 @@
         // State 16
         0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
         0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
@@ -387484,7 +401456,7 @@
         // State 20
         0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -387503,19 +401475,19 @@
         // State 5
         0,
         // State 6
-        -225,
+        -227,
         // State 7
         0,
         // State 8
         -138,
         // State 9
-        -200,
+        -202,
         // State 10
         -125,
         // State 11
         0,
         // State 12
-        -199,
+        -201,
         // State 13
         0,
         // State 14
@@ -387525,7 +401497,7 @@
         // State 16
         0,
         // State 17
-        -202,
+        -204,
         // State 18
         0,
         // State 19
@@ -387533,7 +401505,7 @@
         // State 20
         0,
         // State 21
-        -201,
+        -203,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
@@ -387548,8 +401520,8 @@
                 2 => 12,
                 _ => 9,
             },
-            75 => 2,
-            87 => match state {
+            76 => 2,
+            88 => match state {
                 1 => 10,
                 4 => 16,
                 _ => 15,
@@ -388669,19 +402641,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -388693,37 +402665,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -388735,7 +402707,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -388747,7 +402719,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -388765,43 +402737,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -388819,19 +402791,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -388843,7 +402815,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -388855,7 +402827,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -388867,25 +402839,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -388898,108 +402870,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -389011,43 +402983,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -389059,14 +403031,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -389084,238 +403056,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => __state_machine::SimulatedReduce::Accept,
             225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 105,
+                    nonterminal_produced: 104,
                 }
             }
-            226 => {
+            226 => __state_machine::SimulatedReduce::Accept,
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -390064,18 +404054,18 @@
                 __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             224 => {
-                // __FnParam = FnParam => ActionFn(29);
-                let __sym0 = __pop_Variant16(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action29::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             225 => {
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             226 => {
-                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __FnParam = FnParam => ActionFn(30);
+                let __sym0 = __pop_Variant16(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action30::<>(__sym0);
+                return Some(Ok(__nt));
             }
             227 => {
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -390143,6 +404133,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -390793,10 +404792,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -390807,11 +404806,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -390822,11 +404821,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -390837,13 +404836,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -390854,11 +404853,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -390869,10 +404868,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -390883,11 +404882,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -390898,10 +404897,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -390912,11 +404911,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -390927,10 +404926,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -390941,13 +404940,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -390958,13 +404957,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -390975,10 +404974,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -390989,14 +404988,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -391007,14 +405006,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -391025,10 +405024,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -391039,13 +405038,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -391056,13 +405055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -391073,10 +405072,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -391087,14 +405086,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -391105,14 +405104,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -391123,10 +405122,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -391137,13 +405136,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -391154,10 +405153,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -391168,11 +405167,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -391183,13 +405182,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -391200,14 +405199,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -391218,13 +405217,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -391235,10 +405234,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -391249,11 +405248,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -391264,13 +405263,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -391281,14 +405280,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -391299,13 +405298,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -391316,10 +405315,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -391330,11 +405329,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -391345,13 +405344,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -391362,14 +405361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -391380,13 +405379,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -391397,10 +405396,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -391411,11 +405410,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -391426,13 +405425,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -391443,14 +405442,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -391461,13 +405460,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -391478,10 +405477,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -391492,11 +405491,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -391507,13 +405506,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -391524,14 +405523,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -391542,13 +405541,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -391559,10 +405558,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -391573,11 +405572,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -391588,13 +405587,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -391605,14 +405604,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -391623,13 +405622,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -391640,10 +405639,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -391654,11 +405653,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -391669,13 +405668,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -391686,14 +405685,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -391704,10 +405703,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -391718,10 +405717,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -391732,14 +405731,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -391750,7 +405749,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -391758,7 +405757,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -391769,14 +405768,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -391787,7 +405786,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -391795,7 +405794,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -391806,11 +405805,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391821,11 +405820,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391836,11 +405835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391851,11 +405850,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391866,11 +405865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391881,11 +405880,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391896,11 +405895,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391911,11 +405910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -391926,11 +405925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -391941,11 +405940,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -391956,11 +405955,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -391971,11 +405970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -391986,11 +405985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -392001,11 +406000,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -392016,11 +406015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -392031,11 +406030,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -392046,14 +406045,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -392064,11 +406063,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -392079,10 +406078,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -392093,13 +406092,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -392110,11 +406109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -392125,11 +406124,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -392140,10 +406139,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -392154,13 +406153,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -392171,11 +406170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -392186,11 +406185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -392201,10 +406200,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -392215,13 +406214,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -392232,11 +406231,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -392247,11 +406246,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -392262,10 +406261,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -392276,13 +406275,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -392293,11 +406292,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -392308,11 +406307,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -392323,10 +406322,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -392337,13 +406336,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -392354,11 +406353,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -392369,11 +406368,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -392384,10 +406383,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -392398,13 +406397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -392415,11 +406414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -392430,7 +406429,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -392441,7 +406440,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -392452,11 +406451,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -392467,10 +406466,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -392481,13 +406480,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -392498,11 +406497,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -392513,14 +406512,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -392531,11 +406530,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -392546,11 +406545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -392561,14 +406560,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -392579,13 +406578,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -392596,13 +406595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -392613,13 +406612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -392630,11 +406629,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -392645,14 +406644,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -392663,11 +406662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -392678,14 +406677,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -392696,11 +406695,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -392711,11 +406710,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -392726,10 +406725,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -392740,7 +406739,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -392748,7 +406747,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -392759,14 +406758,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -392777,11 +406776,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -392792,10 +406791,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -392806,7 +406805,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -392815,7 +406814,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -392826,7 +406825,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -392837,7 +406836,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -392848,7 +406847,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -392862,7 +406861,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -392873,7 +406872,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -392885,7 +406884,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -392896,7 +406895,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -392909,7 +406908,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -392920,7 +406919,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -392931,7 +406930,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -392942,7 +406941,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -392955,7 +406954,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -392966,7 +406965,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -392977,7 +406976,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -392988,7 +406987,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -393000,7 +406999,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -393011,7 +407010,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -393021,7 +407020,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -393032,11 +407031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -393047,11 +407046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -393062,10 +407061,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -393076,7 +407075,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -393085,36 +407119,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -393124,36 +407158,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -393164,18 +407198,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -393185,18 +407219,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -393207,18 +407241,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -393228,143 +407262,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -393374,18 +407408,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -393394,412 +407428,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -393811,18 +407845,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -393831,262 +407865,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -394095,18 +408129,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -394114,373 +408148,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -394493,264 +408527,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -394763,52 +408812,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__FnParam::FnParamParser;
@@ -394899,321 +408948,331 @@
         // State 0
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 3
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 83, 0, 0, 0,
         // State 4
-        0, 83, -121, -121, 84, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 85, 86, 0, 87, 88, 89, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 90, -121, 0,
+        0, 84, -121, -121, 85, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 86, 87, 0, 88, 89, 90, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 91, -121, 0,
         // State 5
-        0, 0, 91, -111, 0, 0, -111, 92, -111, -111, -111, 0, 0, -111, 93, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        0, 0, 92, -111, 0, 0, -111, 93, -111, -111, -111, 0, 0, -111, 94, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 6
-        0, -164, -164, -164, -164, 18, -164, -164, -164, -164, -164, 0, 19, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 20, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 18, -166, -166, -166, -166, -166, 0, 19, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 20, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 7
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 8
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 21, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 21, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 9
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 10
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 11
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 12
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 63, 28, 0, 0, 29, 0, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 28, 0, 0, 29, 0, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 0, 0,
         // State 14
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 15
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 16
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 19, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 20, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 19, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 20, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 17
-        71, 0, 0, 9, 0, 10, -82, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, -82, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 20
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 21
-        0, 0, 0, 78, 0, 0, 114, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 116, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 22
-        0, -164, -164, -164, -164, 18, -164, -164, -164, -164, -164, 0, 19, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 20, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 18, -166, -166, -166, -166, -166, 0, 19, 0, -166, 0, 117, -166, -166, -166, 0, -166, -166, -166, 20, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 23
-        0, 0, 91, -110, 0, 0, -110, 92, -110, -110, -110, 0, 0, -110, 93, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, 0, 92, -110, 0, 0, -110, 93, -110, -110, -110, 0, 0, -110, 94, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
         // State 24
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 83, 0, 0, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 63, 28, 0, 0, 29, 0, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 123, 0,
+        0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 64, 28, 0, 0, 29, 0, 0, 0, 0, 30, 0, 0, 0, 31, 0, 0, 0, 126, 0,
         // State 27
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 30
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 31
-        0, 83, -120, -120, 84, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 85, 86, 0, 87, 88, 89, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 90, -120, 0,
+        0, 84, -120, -120, 85, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 86, 87, 0, 88, 89, 90, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 91, -120, 0,
         // State 32
-        71, 0, 0, 9, 0, 10, -84, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, -84, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 33
-        0, 0, 0, 78, 0, 0, -81, 0, 79, 127, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, -81, 0, 80, 130, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 34
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 37
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 38
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 83, 0, 0, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 40
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 41
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 83, 0, 0, 0,
         // State 42
-        0, 0, 0, 78, 0, 0, -83, 0, 79, 136, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, -83, 0, 80, 139, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 43
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 45
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 46
-        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 47
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 51
-        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 52
-        0, 0, 0, 78, 0, 0, 0, 0, 79, -190, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0,
         // State 53
-        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 54
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 55
-        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, -192, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, -192, 0,
         // State 56
-        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 57
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 58
-        71, 0, 0, 9, 0, 10, 0, 11, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 63, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 59
-        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        72, 0, 0, 9, 0, 10, 0, 11, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 64, 0, 0, 75, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 79, 0, 0, 0, 0, 80, 0, 81, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0,
         // State 61
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 64
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
         // State 65
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
         // State 66
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
         // State 67
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
         // State 68
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
         // State 69
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
         // State 70
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
         // State 71
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 72
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 73
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
         // State 74
         0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
         // State 75
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 77
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
         // State 78
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 79
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 80
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 81
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 82
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 83
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 84
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 85
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 86
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 87
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 88
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 89
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 90
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 91
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 92
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 93
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 94
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
         // State 95
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
         // State 97
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0,
         // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 104
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
         // State 108
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 109
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
         // State 111
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
         // State 112
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 114
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
         // State 115
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
         // State 116
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 117
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
         // State 118
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
         // State 119
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 121
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
         // State 122
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
         // State 123
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 124
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 125
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
         // State 126
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
         // State 127
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
         // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 130
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
         // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0,
         // State 132
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 133
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 134
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 136
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 137
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
         // State 138
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 143
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 144
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 145
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 146
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 149
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 150
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 151
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 154
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
         // State 156
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 157
         0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 158
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 159
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 160
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 161
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 162
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -395340,9 +409399,9 @@
         // State 59
         0,
         // State 60
-        -226,
-        // State 61
         0,
+        // State 61
+        -228,
         // State 62
         0,
         // State 63
@@ -395372,9 +409431,9 @@
         // State 75
         0,
         // State 76
-        -128,
-        // State 77
         0,
+        // State 77
+        -128,
         // State 78
         0,
         // State 79
@@ -395450,13 +409509,13 @@
         // State 114
         0,
         // State 115
-        -129,
+        0,
         // State 116
         0,
         // State 117
         0,
         // State 118
-        0,
+        -129,
         // State 119
         0,
         // State 120
@@ -395464,13 +409523,13 @@
         // State 121
         0,
         // State 122
-        -80,
+        0,
         // State 123
         0,
         // State 124
         0,
         // State 125
-        0,
+        -80,
         // State 126
         0,
         // State 127
@@ -395537,29 +409596,40 @@
         0,
         // State 158
         0,
+        // State 159
+        0,
+        // State 160
+        0,
+        // State 161
+        0,
+        // State 162
+        0,
+        // State 163
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             1 => 25,
             15 => 32,
-            30 => 43,
-            33 => 55,
-            36 => 98,
+            30 => 44,
+            33 => 48,
+            36 => 100,
             37 => 14,
             38 => 15,
             39 => 11,
             40 => match state {
-                24 => 115,
-                38 => 132,
-                41 => 134,
-                49 => 145,
-                _ => 76,
+                24 => 118,
+                38 => 135,
+                41 => 137,
+                52 => 155,
+                _ => 77,
             },
-            41 => 110,
-            45 => 128,
+            41 => 112,
+            45 => 131,
             46 => match state {
-                56 => 155,
-                _ => 149,
+                54 => 158,
+                57 => 161,
+                _ => 139,
             },
             49 => match state {
                 9 => 21,
@@ -395570,21 +409640,21 @@
                 29 => 40,
                 30 => 41,
                 32 => 42,
-                37 => 45,
-                44 => 48,
-                47 => 52,
-                54 => 57,
-                58 => 59,
+                37 => 46,
+                45 => 51,
+                50 => 55,
+                56 => 58,
+                59 => 60,
                 _ => 3,
             },
-            50 => 63,
+            50 => 64,
             51 => match state {
-                7 => 94,
-                8 => 95,
-                10 => 97,
-                14 => 108,
-                20 => 112,
-                _ => 64,
+                7 => 95,
+                8 => 96,
+                10 => 99,
+                14 => 110,
+                20 => 114,
+                _ => 65,
             },
             52 => match state {
                 15 => 31,
@@ -395595,67 +409665,68 @@
                 _ => 5,
             },
             55 => match state {
-                13 | 26 => 99,
-                _ => 65,
+                13 | 26 => 101,
+                _ => 66,
             },
             58 => match state {
-                0 => 60,
-                _ => 100,
+                0 => 61,
+                _ => 102,
             },
             60 => match state {
-                9 | 37 | 44 | 47 | 54 | 58 => 22,
+                9 | 37 | 45 | 50 | 56 | 59 => 22,
                 25 => 36,
-                1 => 61,
-                18 => 111,
-                28 => 124,
-                35 | 43 => 129,
-                39 => 133,
-                46 | 51 | 53 | 55..=56 => 140,
-                50 => 146,
+                1 => 62,
+                18 => 113,
+                28 => 127,
+                35 | 44 => 132,
+                39 => 136,
+                43 | 47..=48 | 53..=54 | 57 => 140,
+                49 => 150,
                 _ => 6,
             },
-            62 => 101,
-            64 => 102,
-            68 => 26,
-            71 => match state {
-                13 | 26 => 103,
-                25 => 116,
-                _ => 66,
-            },
+            62 => 97,
+            63 => 103,
+            65 => 104,
+            69 => 26,
             72 => match state {
-                16 => 109,
-                _ => 93,
+                13 | 26 => 105,
+                25 => 119,
+                _ => 67,
             },
-            73 => 16,
-            75 => 50,
-            77 => 104,
-            78 => match state {
-                26 => 121,
-                _ => 105,
+            73 => match state {
+                16 => 111,
+                _ => 94,
             },
-            82 => match state {
-                37 => 131,
-                44 => 139,
-                47 => 144,
-                54 => 151,
-                58 => 156,
-                _ => 96,
+            74 => 16,
+            76 => 49,
+            78 => 106,
+            79 => match state {
+                26 => 124,
+                _ => 107,
             },
             83 => match state {
-                43 => 136,
-                _ => 130,
+                37 => 134,
+                45 => 146,
+                50 => 154,
+                56 => 159,
+                59 => 162,
+                _ => 98,
+            },
+            84 => match state {
+                44 => 143,
+                _ => 133,
             },
-            85 => 67,
             86 => 68,
-            87 => match state {
-                46 => 141,
-                51 => 148,
-                55 => 152,
-                _ => 150,
+            87 => 69,
+            88 => match state {
+                47 => 147,
+                48 => 148,
+                53 => 156,
+                _ => 141,
             },
-            89 => 7,
-            90 => 69,
-            91 => 106,
+            90 => 7,
+            91 => 70,
+            92 => 108,
             _ => 0,
         }
     }
@@ -396771,19 +410842,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -396795,37 +410866,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -396837,7 +410908,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -396849,7 +410920,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -396867,43 +410938,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -396921,19 +410992,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -396945,7 +411016,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -396957,7 +411028,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -396969,25 +411040,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -397000,108 +411071,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -397113,43 +411184,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -397161,14 +411232,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -397186,238 +411257,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => __state_machine::SimulatedReduce::Accept,
             226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 106,
+                    nonterminal_produced: 105,
                 }
             }
-            227 => {
+            227 => __state_machine::SimulatedReduce::Accept,
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -398169,18 +412258,18 @@
                 __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             225 => {
-                // __ForStmt = ForStmt => ActionFn(12);
-                let __sym0 = __pop_Variant36(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action12::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             226 => {
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             227 => {
-                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __ForStmt = ForStmt => ActionFn(13);
+                let __sym0 = __pop_Variant36(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action13::<>(__sym0);
+                return Some(Ok(__nt));
             }
             228 => {
                 __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -398245,6 +412334,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -398895,10 +412993,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -398909,11 +413007,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -398924,11 +413022,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -398939,13 +413037,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -398956,11 +413054,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -398971,10 +413069,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -398985,11 +413083,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -399000,10 +413098,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -399014,11 +413112,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -399029,10 +413127,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -399043,13 +413141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -399060,13 +413158,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -399077,10 +413175,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -399091,14 +413189,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -399109,14 +413207,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -399127,10 +413225,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -399141,13 +413239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -399158,13 +413256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -399175,10 +413273,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -399189,14 +413287,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -399207,14 +413305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -399225,10 +413323,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -399239,13 +413337,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -399256,10 +413354,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -399270,11 +413368,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -399285,13 +413383,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -399302,14 +413400,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -399320,13 +413418,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -399337,10 +413435,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -399351,11 +413449,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -399366,13 +413464,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -399383,14 +413481,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -399401,13 +413499,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -399418,10 +413516,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -399432,11 +413530,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -399447,13 +413545,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -399464,14 +413562,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -399482,13 +413580,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -399499,10 +413597,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -399513,11 +413611,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -399528,13 +413626,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -399545,14 +413643,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -399563,13 +413661,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -399580,10 +413678,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -399594,11 +413692,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -399609,13 +413707,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -399626,14 +413724,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -399644,13 +413742,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -399661,10 +413759,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -399675,11 +413773,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -399690,13 +413788,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -399707,14 +413805,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -399725,13 +413823,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -399742,10 +413840,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -399756,11 +413854,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -399771,13 +413869,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -399788,14 +413886,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -399806,10 +413904,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -399820,10 +413918,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -399834,14 +413932,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -399852,7 +413950,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -399860,7 +413958,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -399871,14 +413969,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -399889,7 +413987,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -399897,7 +413995,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -399908,11 +414006,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -399923,11 +414021,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -399938,11 +414036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -399953,11 +414051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -399968,11 +414066,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -399983,11 +414081,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -399998,11 +414096,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -400013,11 +414111,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -400028,11 +414126,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -400043,11 +414141,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -400058,11 +414156,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -400073,11 +414171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -400088,11 +414186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -400103,11 +414201,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -400118,11 +414216,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -400133,11 +414231,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -400148,14 +414246,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -400166,11 +414264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -400181,10 +414279,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -400195,13 +414293,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -400212,11 +414310,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -400227,11 +414325,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -400242,10 +414340,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -400256,13 +414354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -400273,11 +414371,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -400288,11 +414386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -400303,10 +414401,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -400317,13 +414415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -400334,11 +414432,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -400349,11 +414447,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -400364,10 +414462,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -400378,13 +414476,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -400395,11 +414493,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -400410,11 +414508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -400425,10 +414523,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -400439,13 +414537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -400456,11 +414554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -400471,11 +414569,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -400486,10 +414584,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -400500,13 +414598,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -400517,11 +414615,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -400532,7 +414630,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -400543,7 +414641,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -400554,11 +414652,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -400569,10 +414667,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -400583,13 +414681,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -400600,11 +414698,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -400615,14 +414713,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -400633,11 +414731,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -400648,11 +414746,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -400663,14 +414761,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -400681,13 +414779,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -400698,13 +414796,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -400715,13 +414813,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -400732,11 +414830,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -400747,14 +414845,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -400765,11 +414863,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -400780,14 +414878,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -400798,11 +414896,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -400813,11 +414911,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -400828,10 +414926,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -400842,7 +414940,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -400850,7 +414948,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -400861,14 +414959,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -400879,11 +414977,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -400894,10 +414992,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -400908,7 +415006,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -400917,7 +415015,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -400928,7 +415026,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -400939,7 +415037,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -400950,7 +415048,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -400964,7 +415062,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -400975,7 +415073,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -400987,7 +415085,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -400998,7 +415096,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -401011,7 +415109,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -401022,7 +415120,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -401033,7 +415131,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -401044,7 +415142,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -401057,7 +415155,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -401068,7 +415166,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -401079,7 +415177,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -401090,7 +415188,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -401102,7 +415200,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -401113,7 +415211,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -401123,7 +415221,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -401134,11 +415232,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -401149,11 +415247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -401164,10 +415262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -401178,7 +415276,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -401187,36 +415320,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -401226,36 +415359,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -401266,18 +415399,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -401287,18 +415420,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -401309,18 +415442,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -401330,143 +415463,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -401476,18 +415609,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -401496,412 +415629,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -401913,18 +416046,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -401933,262 +416066,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -402197,18 +416330,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -402216,373 +416349,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -402595,264 +416728,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -402865,52 +417013,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__ForStmt::ForStmtParser;
@@ -402999,417 +417147,427 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 10
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 13
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 87, 24, 0, 0, 25, 0, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 88, 24, 0, 0, 25, 0, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 0, 0,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 19
-        0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, -164, -164, -164, -164, 34, -164, -164, -164, -164, -164, 0, 35, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 36, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 34, -166, -166, -166, -166, -166, 0, 35, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 36, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 87, 24, 0, 0, 25, 0, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 127, 0,
+        0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 88, 24, 0, 0, 25, 0, 0, 0, 0, 26, 0, 0, 0, 27, 0, 0, 0, 128, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 25
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 26
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 27
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 35, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 36, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 35, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 36, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 33
-        137, 0, 0, 42, 0, 43, -82, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, -82, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 34
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 36
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 37
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 159, 0, 0, 0,
         // State 38
-        0, 158, -121, -121, 159, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 160, 161, 0, 162, 163, 164, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 165, -121, 0,
+        0, 160, -121, -121, 161, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 162, 163, 0, 164, 165, 166, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 167, -121, 0,
         // State 39
-        0, 0, 166, -111, 0, 0, -111, 167, -111, -111, -111, 0, 0, -111, 168, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        0, 0, 168, -111, 0, 0, -111, 169, -111, -111, -111, 0, 0, -111, 170, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 40
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 41
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 62, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 62, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 42
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 43
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 44
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 46
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 159, 0, 0, 0,
         // State 47
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 51
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 52
-        137, 0, 0, 42, 0, 43, -84, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, -84, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 53
-        0, 0, 0, 153, 0, 0, -81, 0, 154, 182, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, -81, 0, 156, 184, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 54
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 183, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 55
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 56
-        0, -164, -164, -164, -164, 34, -164, -164, -164, -164, -164, 0, 35, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 36, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 34, -166, -166, -166, -166, -166, 0, 35, 0, -166, 0, 186, -166, -166, -166, 0, -166, -166, -166, 36, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 57
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 58
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 59
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 60
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 61
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 62
-        0, 0, 0, 153, 0, 0, 186, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 189, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 63
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 64
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 65
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 66
-        0, 0, 0, 153, 0, 0, -83, 0, 154, 192, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, -83, 0, 156, 195, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 67
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 68
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 159, 0, 0, 0,
         // State 69
-        0, 0, 166, -110, 0, 0, -110, 167, -110, -110, -110, 0, 0, -110, 168, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, 0, 168, -110, 0, 0, -110, 169, -110, -110, -110, 0, 0, -110, 170, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
         // State 70
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0,
         // State 71
-        0, 158, -120, -120, 159, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 160, 161, 0, 162, 163, 164, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 165, -120, 0,
+        0, 160, -120, -120, 161, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 162, 163, 0, 164, 165, 166, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 167, -120, 0,
         // State 72
-        0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 74
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 75
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 76
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 77
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 157, 0, 0, 0,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 78
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 159, 0, 0, 0,
         // State 79
-        137, 0, 0, 42, 0, 43, 0, 44, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 0, 0, 0, 0, 0, 87, 0, 0, 140, 0, 0, 0, 0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 142,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 80
-        0, 0, 0, 153, 0, 0, 0, 0, 154, -190, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, -190, 0,
+        138, 0, 0, 42, 0, 43, 0, 44, 0, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 88, 0, 0, 141, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 143,
         // State 81
-        0, 0, 0, 153, 0, 0, 0, 0, 154, 0, 155, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, -192, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, -192, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 155, 0, 0, 0, 0, 156, 0, 157, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 85
-        0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 86
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 87
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 88
-        0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
-        0, 0, 0, 0, 0, 0, -85, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -85, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        0, 0, 0, 0, 0, 0, -87, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -87, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 98
-        0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, -125, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -125, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 106
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 108
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
         // State 114
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 115
-        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 116
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0,
         // State 117
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 118
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 119
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 121
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 122
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
         // State 123
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
         // State 124
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
         // State 125
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 126
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 127
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
         // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
         // State 129
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 130
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
         // State 131
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
         // State 132
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
         // State 133
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
         // State 134
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
         // State 135
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
         // State 136
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
         // State 137
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 138
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 139
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
         // State 140
         0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
         // State 141
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
         // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 143
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 144
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 146
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
         // State 149
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 150
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 151
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0,
         // State 152
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 153
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 154
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 155
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 156
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 157
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 158
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 159
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 160
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 161
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 162
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 163
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 164
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 165
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 166
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 167
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 168
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 169
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 170
-        0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
         // State 171
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
         // State 172
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 173
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
         // State 174
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 175
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
         // State 176
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 177
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -204, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0,
         // State 178
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 179
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 180
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 181
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 182
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
         // State 183
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 184
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
         // State 185
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 186
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
         // State 187
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
         // State 188
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
         // State 189
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
         // State 190
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 191
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 192
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0,
+        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0,
         // State 193
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 194
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 195
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0,
         // State 196
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 197
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 198
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
         // State 199
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
         // State 200
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 201
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 202
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 203
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 204
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 205
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 206
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 207
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 208
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 209
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 210
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -403580,9 +417738,9 @@
         // State 81
         0,
         // State 82
-        -227,
-        // State 83
         0,
+        // State 83
+        -229,
         // State 84
         0,
         // State 85
@@ -403614,9 +417772,9 @@
         // State 98
         0,
         // State 99
-        -137,
-        // State 100
         0,
+        // State 100
+        -137,
         // State 101
         0,
         // State 102
@@ -403624,9 +417782,9 @@
         // State 103
         0,
         // State 104
-        -133,
-        // State 105
         0,
+        // State 105
+        -133,
         // State 106
         0,
         // State 107
@@ -403650,11 +417808,11 @@
         // State 116
         0,
         // State 117
-        -135,
+        0,
         // State 118
-        -136,
+        -135,
         // State 119
-        0,
+        -136,
         // State 120
         0,
         // State 121
@@ -403668,9 +417826,9 @@
         // State 125
         0,
         // State 126
-        -80,
-        // State 127
         0,
+        // State 127
+        -80,
         // State 128
         0,
         // State 129
@@ -403706,11 +417864,11 @@
         // State 144
         0,
         // State 145
-        -131,
+        0,
         // State 146
-        -132,
+        -131,
         // State 147
-        0,
+        -132,
         // State 148
         0,
         // State 149
@@ -403772,11 +417930,11 @@
         // State 177
         0,
         // State 178
-        -134,
+        0,
         // State 179
         0,
         // State 180
-        0,
+        -134,
         // State 181
         0,
         // State 182
@@ -403796,13 +417954,13 @@
         // State 189
         0,
         // State 190
-        -130,
+        0,
         // State 191
         0,
         // State 192
         0,
         // State 193
-        0,
+        -130,
         // State 194
         0,
         // State 195
@@ -403827,44 +417985,55 @@
         0,
         // State 205
         0,
+        // State 206
+        0,
+        // State 207
+        0,
+        // State 208
+        0,
+        // State 209
+        0,
+        // State 210
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
             1 => 19,
             15 => 52,
             18 => 7,
-            30 => 73,
+            30 => 74,
             33 => 47,
-            36 => 105,
+            36 => 106,
             37 => 59,
             38 => 60,
             39 => 58,
             40 => match state {
-                12 => 104,
-                16 => 117,
-                18 => 118,
-                28 => 145,
-                30 => 146,
-                37 => 151,
-                46 => 173,
-                50 => 178,
-                64 => 190,
-                68 => 195,
-                70 => 196,
-                77 => 204,
-                _ => 99,
+                12 => 105,
+                16 => 118,
+                18 => 119,
+                28 => 146,
+                30 => 147,
+                37 => 153,
+                46 => 175,
+                50 => 180,
+                64 => 193,
+                68 => 198,
+                70 => 199,
+                78 => 209,
+                _ => 100,
             },
-            41 => 148,
+            41 => 149,
             42 => match state {
-                6 => 94,
-                8 => 97,
-                11 => 103,
-                _ => 90,
+                6 => 95,
+                8 => 98,
+                11 => 104,
+                _ => 91,
             },
-            45 => 192,
+            45 => 195,
             46 => match state {
-                48 => 177,
-                _ => 143,
+                48 => 179,
+                73 => 201,
+                _ => 144,
             },
             49 => match state {
                 25 => 45,
@@ -403876,20 +418045,20 @@
                 51 => 65,
                 52 => 66,
                 57 => 68,
-                74 => 77,
                 75 => 78,
-                76 => 80,
-                79 => 81,
+                76 => 79,
+                77 => 81,
+                80 => 82,
                 _ => 37,
             },
-            50 => 129,
+            50 => 130,
             51 => match state {
-                40 => 168,
-                41 => 169,
-                43 => 171,
-                59 => 183,
-                61 => 184,
-                _ => 130,
+                40 => 170,
+                41 => 171,
+                43 => 173,
+                59 => 186,
+                61 => 187,
+                _ => 131,
             },
             52 => match state {
                 60 => 71,
@@ -403900,79 +418069,80 @@
                 _ => 39,
             },
             55 => match state {
-                14 | 21 => 106,
-                _ => 131,
+                14 | 21 => 107,
+                _ => 132,
             },
             56 => match state {
-                7 => 95,
-                _ => 91,
+                7 => 96,
+                _ => 92,
             },
-            58 => 107,
-            59 => 82,
+            58 => 108,
+            59 => 83,
             60 => match state {
                 19 => 31,
-                36 | 42 | 51 | 75..=76 | 79 => 56,
-                1 => 85,
-                2 => 88,
-                3 => 89,
-                4 | 6..=8 | 11 => 92,
-                5 => 93,
-                10 | 13 | 17 | 27 | 29 | 47..=49 | 63 | 72 => 100,
-                15 => 115,
-                22 => 128,
-                24 => 142,
-                34 => 149,
-                44 => 172,
-                67 | 73 => 193,
+                36 | 42 | 51 | 76..=77 | 80 => 56,
+                1 => 86,
+                2 => 89,
+                3 => 90,
+                4 | 6..=8 | 11 => 93,
+                5 => 94,
+                10 | 13 | 17 | 27 | 29 | 47..=49 | 63 | 72..=73 => 101,
+                15 => 116,
+                22 => 129,
+                24 => 143,
+                34 => 150,
+                44 => 174,
+                67 | 74 => 196,
                 _ => 20,
             },
-            62 => 108,
-            64 => 109,
-            68 => 21,
-            71 => match state {
-                14 | 21 => 110,
-                19 => 119,
-                _ => 132,
-            },
+            62 => 151,
+            63 => 109,
+            65 => 110,
+            69 => 21,
             72 => match state {
-                32 => 147,
-                _ => 123,
+                14 | 21 => 111,
+                19 => 120,
+                _ => 133,
             },
-            73 => 32,
-            75 => 15,
-            77 => 111,
-            78 => match state {
-                21 => 125,
-                _ => 112,
+            73 => match state {
+                32 => 148,
+                _ => 124,
             },
-            82 => match state {
-                42 => 170,
-                51 => 179,
-                75 => 201,
-                76 => 203,
-                79 => 205,
-                _ => 150,
+            74 => 32,
+            76 => 15,
+            78 => 112,
+            79 => match state {
+                21 => 126,
+                _ => 113,
             },
             83 => match state {
-                73 => 198,
-                _ => 194,
+                42 => 172,
+                51 => 181,
+                76 => 205,
+                77 => 208,
+                80 => 210,
+                _ => 152,
+            },
+            84 => match state {
+                74 => 202,
+                _ => 197,
             },
-            85 => 133,
             86 => 134,
-            87 => match state {
+            87 => 135,
+            88 => match state {
                 13 => 18,
                 17 => 30,
                 29 => 50,
                 49 => 64,
-                10 => 101,
-                47 => 174,
-                63 => 187,
-                72 => 197,
-                _ => 144,
+                10 => 102,
+                47 => 176,
+                63 => 190,
+                72 => 200,
+                _ => 145,
             },
-            89 => 40,
-            90 => 135,
-            91 => 113,
+            90 => 40,
+            91 => 136,
+            92 => 114,
             _ => 0,
         }
     }
@@ -405088,19 +419258,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -405112,37 +419282,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -405154,7 +419324,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -405166,7 +419336,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -405184,43 +419354,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -405238,19 +419408,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -405262,7 +419432,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -405274,7 +419444,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -405286,25 +419456,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -405317,108 +419487,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -405430,43 +419600,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -405478,14 +419648,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -405503,238 +419673,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => __state_machine::SimulatedReduce::Accept,
             227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 107,
+                    nonterminal_produced: 106,
                 }
             }
-            228 => {
+            228 => __state_machine::SimulatedReduce::Accept,
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -406489,18 +420677,18 @@
                 __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             226 => {
-                // __Function = Function => ActionFn(30);
-                let __sym0 = __pop_Variant37(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action30::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             227 => {
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Function = Function => ActionFn(31);
+                let __sym0 = __pop_Variant37(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action31::<>(__sym0);
+                return Some(Ok(__nt));
             }
             229 => {
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -406562,6 +420750,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -407212,10 +421409,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -407226,11 +421423,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -407241,11 +421438,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -407256,13 +421453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -407273,11 +421470,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -407288,10 +421485,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -407302,11 +421499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -407317,10 +421514,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -407331,11 +421528,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -407346,10 +421543,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -407360,13 +421557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -407377,13 +421574,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -407394,10 +421591,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -407408,14 +421605,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -407426,14 +421623,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -407444,10 +421641,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -407458,13 +421655,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -407475,13 +421672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -407492,10 +421689,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -407506,14 +421703,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -407524,14 +421721,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -407542,10 +421739,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -407556,13 +421753,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -407573,10 +421770,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -407587,11 +421784,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -407602,13 +421799,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -407619,14 +421816,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -407637,13 +421834,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -407654,10 +421851,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -407668,11 +421865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -407683,13 +421880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -407700,14 +421897,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -407718,13 +421915,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -407735,10 +421932,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -407749,11 +421946,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -407764,13 +421961,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -407781,14 +421978,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -407799,13 +421996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -407816,10 +422013,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -407830,11 +422027,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -407845,13 +422042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -407862,14 +422059,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -407880,13 +422077,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -407897,10 +422094,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -407911,11 +422108,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -407926,13 +422123,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -407943,14 +422140,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -407961,13 +422158,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -407978,10 +422175,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -407992,11 +422189,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -408007,13 +422204,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -408024,14 +422221,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -408042,13 +422239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -408059,10 +422256,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -408073,11 +422270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -408088,13 +422285,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -408105,14 +422302,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -408123,10 +422320,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -408137,10 +422334,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -408151,14 +422348,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -408169,7 +422366,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -408177,7 +422374,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -408188,14 +422385,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -408206,7 +422403,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -408214,7 +422411,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -408225,11 +422422,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408240,11 +422437,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408255,11 +422452,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408270,11 +422467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408285,11 +422482,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408300,11 +422497,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408315,11 +422512,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408330,11 +422527,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -408345,11 +422542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -408360,11 +422557,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -408375,11 +422572,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -408390,11 +422587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -408405,11 +422602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -408420,11 +422617,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -408435,11 +422632,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -408450,11 +422647,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -408465,14 +422662,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -408483,11 +422680,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -408498,10 +422695,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -408512,13 +422709,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -408529,11 +422726,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -408544,11 +422741,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -408559,10 +422756,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -408573,13 +422770,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -408590,11 +422787,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -408605,11 +422802,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -408620,10 +422817,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -408634,13 +422831,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -408651,11 +422848,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -408666,11 +422863,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -408681,10 +422878,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -408695,13 +422892,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -408712,11 +422909,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -408727,11 +422924,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -408742,10 +422939,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -408756,13 +422953,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -408773,11 +422970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -408788,11 +422985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -408803,10 +423000,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -408817,13 +423014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -408834,11 +423031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -408849,7 +423046,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -408860,7 +423057,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -408871,11 +423068,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -408886,10 +423083,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -408900,13 +423097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -408917,11 +423114,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -408932,14 +423129,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -408950,11 +423147,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -408965,11 +423162,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -408980,14 +423177,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -408998,13 +423195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -409015,13 +423212,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -409032,13 +423229,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -409049,11 +423246,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -409064,14 +423261,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -409082,11 +423279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -409097,14 +423294,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -409115,11 +423312,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -409130,11 +423327,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -409145,10 +423342,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -409159,7 +423356,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -409167,7 +423364,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -409178,14 +423375,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -409196,11 +423393,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -409211,10 +423408,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -409225,7 +423422,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -409234,7 +423431,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -409245,7 +423442,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -409256,7 +423453,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -409267,7 +423464,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -409281,7 +423478,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -409292,7 +423489,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -409304,7 +423501,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -409315,7 +423512,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -409328,7 +423525,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -409339,7 +423536,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -409350,7 +423547,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -409361,7 +423558,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -409374,7 +423571,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -409385,7 +423582,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -409396,7 +423593,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -409407,7 +423604,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -409419,7 +423616,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -409430,7 +423627,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -409440,7 +423637,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -409451,11 +423648,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -409466,11 +423663,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -409481,10 +423678,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -409495,7 +423692,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -409504,36 +423736,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -409543,36 +423775,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -409583,18 +423815,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -409604,18 +423836,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -409626,18 +423858,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -409647,143 +423879,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -409793,18 +424025,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -409813,412 +424045,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -410230,18 +424462,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -410250,262 +424482,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -410514,18 +424746,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -410533,373 +424765,373 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -410912,264 +425144,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -411182,52 +425429,52 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Function::FunctionParser;
@@ -411329,7 +425576,7 @@
         // State 0
         0,
         // State 1
-        -228,
+        -230,
         // State 2
         -138,
     ];
@@ -412451,19 +426698,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -412475,37 +426722,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -412517,7 +426764,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -412529,7 +426776,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -412547,43 +426794,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -412601,19 +426848,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -412625,7 +426872,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -412637,7 +426884,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -412649,25 +426896,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -412680,108 +426927,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -412793,43 +427040,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -412841,14 +427088,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -412866,238 +427113,256 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => __state_machine::SimulatedReduce::Accept,
             228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 108,
+                    nonterminal_produced: 107,
                 }
             }
-            229 => {
+            229 => __state_machine::SimulatedReduce::Accept,
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
@@ -413855,6 +428120,12 @@
                 __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             227 => {
+                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            228 => {
+                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            229 => {
                 // __Ident = Ident => ActionFn(0);
                 let __sym0 = __pop_Variant18(__symbols);
                 let __start = __sym0.0;
@@ -413862,12 +428133,6 @@
                 let __nt = super::__action0::<>(__sym0);
                 return Some(Ok(__nt));
             }
-            228 => {
-                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
-            229 => {
-                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
-            }
             230 => {
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
@@ -413925,6 +428190,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -414575,10 +428849,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -414589,11 +428863,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -414604,11 +428878,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -414619,13 +428893,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -414636,11 +428910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -414651,10 +428925,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -414665,11 +428939,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -414680,10 +428954,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -414694,11 +428968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -414709,10 +428983,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -414723,13 +428997,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -414740,13 +429014,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -414757,10 +429031,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -414771,14 +429045,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -414789,14 +429063,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -414807,10 +429081,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -414821,13 +429095,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -414838,13 +429112,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -414855,10 +429129,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -414869,14 +429143,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -414887,14 +429161,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -414905,10 +429179,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -414919,13 +429193,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -414936,10 +429210,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -414950,11 +429224,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -414965,13 +429239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -414982,14 +429256,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -415000,13 +429274,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -415017,10 +429291,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -415031,11 +429305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -415046,13 +429320,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -415063,14 +429337,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -415081,13 +429355,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -415098,10 +429372,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -415112,11 +429386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -415127,13 +429401,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -415144,14 +429418,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -415162,13 +429436,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -415179,10 +429453,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -415193,11 +429467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -415208,13 +429482,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -415225,14 +429499,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -415243,13 +429517,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -415260,10 +429534,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -415274,11 +429548,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -415289,13 +429563,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -415306,14 +429580,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -415324,13 +429598,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -415341,10 +429615,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -415355,11 +429629,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -415370,13 +429644,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -415387,14 +429661,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -415405,13 +429679,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -415422,10 +429696,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -415436,11 +429710,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -415451,13 +429725,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -415468,14 +429742,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -415486,10 +429760,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -415500,10 +429774,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -415514,14 +429788,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -415532,7 +429806,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -415540,7 +429814,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -415551,14 +429825,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -415569,7 +429843,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -415577,7 +429851,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -415588,11 +429862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415603,11 +429877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415618,11 +429892,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415633,11 +429907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415648,11 +429922,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415663,11 +429937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415678,11 +429952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415693,11 +429967,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -415708,11 +429982,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -415723,11 +429997,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -415738,11 +430012,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -415753,11 +430027,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -415768,11 +430042,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -415783,11 +430057,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -415798,11 +430072,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -415813,11 +430087,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -415828,14 +430102,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -415846,11 +430120,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -415861,10 +430135,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -415875,13 +430149,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -415892,11 +430166,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -415907,11 +430181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -415922,10 +430196,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -415936,13 +430210,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -415953,11 +430227,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -415968,11 +430242,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -415983,10 +430257,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -415997,13 +430271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -416014,11 +430288,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -416029,11 +430303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -416044,10 +430318,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -416058,13 +430332,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -416075,11 +430349,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -416090,11 +430364,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -416105,10 +430379,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -416119,13 +430393,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -416136,11 +430410,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -416151,11 +430425,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -416166,10 +430440,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -416180,13 +430454,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -416197,11 +430471,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -416212,7 +430486,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -416223,7 +430497,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -416234,11 +430508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -416249,10 +430523,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -416263,13 +430537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -416280,11 +430554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -416295,14 +430569,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -416313,11 +430587,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -416328,11 +430602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -416343,14 +430617,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -416361,13 +430635,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -416378,13 +430652,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -416395,13 +430669,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -416412,11 +430686,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -416427,14 +430701,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -416445,11 +430719,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -416460,14 +430734,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -416478,11 +430752,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -416493,11 +430767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -416508,10 +430782,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -416522,7 +430796,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -416530,7 +430804,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -416541,14 +430815,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -416559,11 +430833,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -416574,10 +430848,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -416588,7 +430862,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -416597,7 +430871,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -416608,7 +430882,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -416619,7 +430893,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -416630,7 +430904,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -416644,7 +430918,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -416655,7 +430929,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -416667,7 +430941,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -416678,7 +430952,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -416691,7 +430965,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -416702,7 +430976,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -416713,7 +430987,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -416724,7 +430998,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -416737,7 +431011,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -416748,7 +431022,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -416759,7 +431033,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -416770,7 +431044,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -416782,7 +431056,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -416793,7 +431067,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -416803,7 +431077,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -416814,11 +431088,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -416829,11 +431103,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -416844,10 +431118,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -416858,7 +431132,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -416867,36 +431176,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -416906,36 +431215,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -416946,18 +431255,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -416967,18 +431276,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -416989,18 +431298,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -417010,143 +431319,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -417156,18 +431465,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -417176,412 +431485,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -417593,18 +431902,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -417613,262 +431922,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -417877,18 +432186,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -417896,643 +432205,658 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -418545,59 +432869,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
 pub(crate) use self::__parse__Ident::IdentParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__IfStmt {
+mod __parse__IdentWithOptionalType {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -418679,323 +433003,53 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
+        0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 82, -121, -121, 83, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 84, 85, 0, 86, 87, 88, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 89, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 90, -111, 0, 0, -111, 91, -111, -111, -111, 0, 0, -111, 92, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, -164, -164, -164, -164, 16, -164, -164, -164, -164, -164, 0, 17, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 18, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 19, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, -138, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 10
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 72, 2, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 17, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 18, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        69, 0, 0, 8, 0, 9, -82, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
-        0, 0, 0, 77, 0, 0, 113, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, -164, -164, -164, -164, 16, -164, -164, -164, -164, -164, 0, 17, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 18, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 90, -110, 0, 0, -110, 91, -110, -110, -110, 0, 0, -110, 92, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 24
-        0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 72, 2, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 122, 0,
-        // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 27
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 28
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 29
-        0, 82, -120, -120, 83, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 84, 85, 0, 86, 87, 88, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 89, -120, 0,
-        // State 30
-        69, 0, 0, 8, 0, 9, -84, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 31
-        0, 0, 0, 77, 0, 0, -81, 0, 78, 127, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 32
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 33
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
-        // State 34
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 35
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 37
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 38
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
-        // State 39
-        0, 0, 0, 77, 0, 0, -83, 0, 78, 135, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 40
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
-        // State 41
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 42
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 43
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 44
-        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 45
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 46
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 47
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
-        // State 48
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 49
-        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 50
-        0, 0, 0, 77, 0, 0, 0, 0, 78, -190, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, -190, 0,
-        // State 51
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 52
-        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 53
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 54
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
-        // State 55
-        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 56
-        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 57
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 58
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
-        // State 59
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
-        // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 61
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
-        // State 62
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
-        // State 63
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
-        // State 64
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
-        // State 65
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
-        // State 66
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
-        // State 67
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
-        // State 68
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
-        // State 69
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
-        // State 70
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
-        // State 71
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
-        // State 72
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
-        // State 73
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
-        // State 74
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
-        // State 75
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
-        // State 76
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
-        // State 77
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
-        // State 78
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
-        // State 79
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
-        // State 80
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
-        // State 81
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
-        // State 82
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
-        // State 83
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 84
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 85
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 86
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 87
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 88
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 89
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 90
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 91
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 92
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
-        // State 93
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
-        // State 94
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
-        // State 95
-        0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 96
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
-        // State 97
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 99
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
-        // State 100
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
-        // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 104
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
-        // State 105
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
-        // State 106
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 107
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
-        // State 108
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
-        // State 109
-        0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 110
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
-        // State 111
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
-        // State 112
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
-        // State 113
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
-        // State 114
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
-        // State 115
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 116
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 117
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
-        // State 118
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
-        // State 119
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
-        // State 120
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
-        // State 121
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
-        // State 122
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
-        // State 123
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 124
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 125
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
-        // State 126
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 127
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
-        // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0,
-        // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 130
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 132
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 133
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
-        // State 134
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 135
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 136
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 137
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 138
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 143
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
-        // State 144
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
-        // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 146
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 147
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 149
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 150
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 151
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
-        // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 154
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 156
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 157
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 158
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -419014,11 +433068,11 @@
         // State 5
         0,
         // State 6
-        0,
+        -141,
         // State 7
-        0,
+        -231,
         // State 8
-        0,
+        -138,
         // State 9
         0,
         // State 10
@@ -419032,7 +433086,7 @@
         // State 14
         0,
         // State 15
-        0,
+        -142,
         // State 16
         0,
         // State 17
@@ -419049,395 +433103,26 @@
         0,
         // State 23
         0,
-        // State 24
-        0,
-        // State 25
-        0,
-        // State 26
-        0,
-        // State 27
-        0,
-        // State 28
-        0,
-        // State 29
-        0,
-        // State 30
-        0,
-        // State 31
-        0,
-        // State 32
-        0,
-        // State 33
-        0,
-        // State 34
-        0,
-        // State 35
-        0,
-        // State 36
-        0,
-        // State 37
-        0,
-        // State 38
-        0,
-        // State 39
-        0,
-        // State 40
-        0,
-        // State 41
-        0,
-        // State 42
-        0,
-        // State 43
-        0,
-        // State 44
-        0,
-        // State 45
-        0,
-        // State 46
-        0,
-        // State 47
-        0,
-        // State 48
-        0,
-        // State 49
-        0,
-        // State 50
-        0,
-        // State 51
-        0,
-        // State 52
-        0,
-        // State 53
-        0,
-        // State 54
-        0,
-        // State 55
-        0,
-        // State 56
-        0,
-        // State 57
-        0,
-        // State 58
-        0,
-        // State 59
-        0,
-        // State 60
-        -229,
-        // State 61
-        0,
-        // State 62
-        0,
-        // State 63
-        0,
-        // State 64
-        0,
-        // State 65
-        0,
-        // State 66
-        0,
-        // State 67
-        0,
-        // State 68
-        0,
-        // State 69
-        0,
-        // State 70
-        0,
-        // State 71
-        0,
-        // State 72
-        0,
-        // State 73
-        0,
-        // State 74
-        0,
-        // State 75
-        -142,
-        // State 76
-        0,
-        // State 77
-        0,
-        // State 78
-        0,
-        // State 79
-        0,
-        // State 80
-        0,
-        // State 81
-        0,
-        // State 82
-        0,
-        // State 83
-        0,
-        // State 84
-        0,
-        // State 85
-        0,
-        // State 86
-        0,
-        // State 87
-        0,
-        // State 88
-        0,
-        // State 89
-        0,
-        // State 90
-        0,
-        // State 91
-        0,
-        // State 92
-        0,
-        // State 93
-        0,
-        // State 94
-        0,
-        // State 95
-        0,
-        // State 96
-        0,
-        // State 97
-        0,
-        // State 98
-        0,
-        // State 99
-        0,
-        // State 100
-        0,
-        // State 101
-        0,
-        // State 102
-        0,
-        // State 103
-        0,
-        // State 104
-        0,
-        // State 105
-        0,
-        // State 106
-        0,
-        // State 107
-        0,
-        // State 108
-        0,
-        // State 109
-        0,
-        // State 110
-        0,
-        // State 111
-        0,
-        // State 112
-        0,
-        // State 113
-        0,
-        // State 114
-        -141,
-        // State 115
-        0,
-        // State 116
-        0,
-        // State 117
-        0,
-        // State 118
-        0,
-        // State 119
-        0,
-        // State 120
-        0,
-        // State 121
-        -80,
-        // State 122
-        0,
-        // State 123
-        0,
-        // State 124
-        0,
-        // State 125
-        0,
-        // State 126
-        0,
-        // State 127
-        0,
-        // State 128
-        0,
-        // State 129
-        0,
-        // State 130
-        0,
-        // State 131
-        0,
-        // State 132
-        0,
-        // State 133
-        0,
-        // State 134
-        0,
-        // State 135
-        0,
-        // State 136
-        0,
-        // State 137
-        0,
-        // State 138
-        0,
-        // State 139
-        0,
-        // State 140
-        0,
-        // State 141
-        0,
-        // State 142
-        0,
-        // State 143
-        0,
-        // State 144
-        0,
-        // State 145
-        0,
-        // State 146
-        0,
-        // State 147
-        0,
-        // State 148
-        0,
-        // State 149
-        0,
-        // State 150
-        0,
-        // State 151
-        0,
-        // State 152
-        0,
-        // State 153
-        0,
-        // State 154
-        0,
-        // State 155
-        0,
-        // State 156
-        0,
-        // State 157
-        0,
-        // State 158
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 23,
-            15 => 30,
-            30 => 40,
-            33 => 55,
-            36 => 97,
-            37 => 12,
-            38 => 13,
-            39 => 10,
-            40 => match state {
-                22 => 114,
-                38 => 133,
-                47 => 144,
-                54 => 151,
-                _ => 75,
-            },
-            41 => 109,
-            45 => 128,
+            33 => 2,
             46 => match state {
-                56 => 155,
-                _ => 148,
-            },
-            49 => match state {
-                8 => 19,
-                15 => 31,
-                17 => 32,
-                27 => 37,
-                28 => 38,
-                30 => 39,
-                35 => 42,
-                41 => 46,
-                43 => 47,
-                45 => 50,
-                51 => 54,
-                53 => 57,
-                58 => 59,
-                _ => 2,
-            },
-            50 => 61,
-            51 => match state {
-                6 => 93,
-                7 => 94,
-                9 => 96,
-                12 => 107,
-                18 => 111,
-                _ => 62,
-            },
-            52 => match state {
-                13 => 29,
-                _ => 3,
-            },
-            53 => match state {
-                10 => 21,
-                _ => 4,
-            },
-            55 => match state {
-                11 | 24 => 98,
-                _ => 63,
+                4 => 20,
+                5 => 22,
+                _ => 10,
             },
-            58 => 99,
             60 => match state {
-                8 | 35 | 41 | 45 | 53 | 58 => 20,
-                23 => 34,
-                16 => 110,
-                25 => 123,
-                26 => 124,
-                33 | 40 => 129,
-                36 => 132,
-                44 | 49 | 52 | 55..=56 => 139,
-                48 => 145,
-                _ => 5,
-            },
-            62 => match state {
-                0 => 60,
-                _ => 100,
-            },
-            64 => 101,
-            68 => 24,
-            71 => match state {
-                11 | 24 => 102,
-                23 => 115,
-                _ => 64,
-            },
-            72 => match state {
-                14 => 108,
-                _ => 92,
-            },
-            73 => 14,
-            75 => 48,
-            77 => 103,
-            78 => match state {
-                24 => 120,
-                _ => 104,
-            },
-            82 => match state {
-                35 => 131,
-                41 => 138,
-                45 => 143,
-                53 => 150,
-                58 => 156,
-                _ => 95,
-            },
-            83 => match state {
-                40 => 135,
-                _ => 130,
+                0 => 6,
+                3 => 16,
+                _ => 11,
             },
-            85 => 65,
-            86 => 66,
-            87 => match state {
-                44 => 140,
-                49 => 147,
-                55 => 152,
-                _ => 149,
+            62 => 7,
+            76 => 3,
+            88 => match state {
+                2 => 14,
+                _ => 12,
             },
-            89 => 6,
-            90 => 67,
-            91 => 105,
             _ => 0,
         }
     }
@@ -419532,7 +433217,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::IfStmt;
+        type Success = ast::Type;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -420553,19 +434238,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -420577,37 +434262,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -420619,7 +434304,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -420631,7 +434316,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -420649,43 +434334,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -420703,19 +434388,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -420727,7 +434412,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -420739,7 +434424,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -420751,25 +434436,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -420782,108 +434467,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -420895,43 +434580,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -420943,14 +434628,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -420968,248 +434653,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => __state_machine::SimulatedReduce::Accept,
             229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 109,
+                    nonterminal_produced: 108,
                 }
             }
-            230 => {
+            230 => __state_machine::SimulatedReduce::Accept,
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct IfStmtParser {
+    pub(crate) struct IdentWithOptionalTypeParser {
         _priv: (),
     }
 
-    impl IfStmtParser {
-        pub(crate) fn new() -> IfStmtParser {
-            IfStmtParser {
+    impl IdentWithOptionalTypeParser {
+        pub(crate) fn new() -> IdentWithOptionalTypeParser {
+            IdentWithOptionalTypeParser {
                 _priv: (),
             }
         }
@@ -421221,7 +434924,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::IfStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Type, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -421272,7 +434975,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::IfStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Type,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -421960,18 +435663,18 @@
                 __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             228 => {
-                // __IfStmt = IfStmt => ActionFn(13);
-                let __sym0 = __pop_Variant39(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action13::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             229 => {
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             230 => {
-                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+                let __sym0 = __pop_Variant6(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action2::<>(__sym0);
+                return Some(Ok(__nt));
             }
             231 => {
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -422027,6 +435730,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -422677,10 +436389,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -422691,11 +436403,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -422706,11 +436418,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -422721,13 +436433,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -422738,11 +436450,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -422753,10 +436465,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -422767,11 +436479,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -422782,10 +436494,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -422796,11 +436508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -422811,10 +436523,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -422825,13 +436537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -422842,13 +436554,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -422859,10 +436571,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -422873,14 +436585,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -422891,14 +436603,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -422909,10 +436621,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -422923,13 +436635,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -422940,13 +436652,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -422957,10 +436669,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -422971,14 +436683,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -422989,14 +436701,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -423007,10 +436719,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -423021,13 +436733,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -423038,10 +436750,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -423052,11 +436764,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -423067,13 +436779,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -423084,14 +436796,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -423102,13 +436814,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -423119,10 +436831,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -423133,11 +436845,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -423148,13 +436860,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -423165,14 +436877,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -423183,13 +436895,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -423200,10 +436912,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -423214,11 +436926,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -423229,13 +436941,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -423246,14 +436958,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -423264,13 +436976,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -423281,10 +436993,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -423295,11 +437007,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -423310,13 +437022,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -423327,14 +437039,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -423345,13 +437057,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -423362,10 +437074,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -423376,11 +437088,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -423391,13 +437103,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -423408,14 +437120,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -423426,13 +437138,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -423443,10 +437155,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -423457,11 +437169,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -423472,13 +437184,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -423489,14 +437201,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -423507,13 +437219,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -423524,10 +437236,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -423538,11 +437250,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -423553,13 +437265,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -423570,14 +437282,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -423588,10 +437300,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -423602,10 +437314,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -423616,14 +437328,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -423634,7 +437346,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -423642,7 +437354,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -423653,14 +437365,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -423671,7 +437383,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -423679,7 +437391,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -423690,11 +437402,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423705,11 +437417,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423720,11 +437432,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423735,11 +437447,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423750,11 +437462,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423765,11 +437477,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423780,11 +437492,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423795,11 +437507,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -423810,11 +437522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -423825,11 +437537,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -423840,11 +437552,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -423855,11 +437567,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -423870,11 +437582,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -423885,11 +437597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -423900,11 +437612,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -423915,11 +437627,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -423930,14 +437642,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -423948,11 +437660,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -423963,10 +437675,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -423977,13 +437689,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -423994,11 +437706,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -424009,11 +437721,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -424024,10 +437736,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -424038,13 +437750,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -424055,11 +437767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -424070,11 +437782,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -424085,10 +437797,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -424099,13 +437811,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -424116,11 +437828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -424131,11 +437843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -424146,10 +437858,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -424160,13 +437872,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -424177,11 +437889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -424192,11 +437904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -424207,10 +437919,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -424221,13 +437933,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -424238,11 +437950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -424253,11 +437965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -424268,10 +437980,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -424282,13 +437994,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -424299,11 +438011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -424314,7 +438026,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -424325,7 +438037,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -424336,11 +438048,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -424351,10 +438063,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -424365,13 +438077,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -424382,11 +438094,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -424397,14 +438109,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -424415,11 +438127,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -424430,11 +438142,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -424445,14 +438157,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -424463,13 +438175,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -424480,13 +438192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -424497,13 +438209,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -424514,11 +438226,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -424529,14 +438241,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -424547,11 +438259,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -424562,14 +438274,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -424580,11 +438292,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -424595,11 +438307,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -424610,10 +438322,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -424624,7 +438336,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -424632,7 +438344,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -424643,14 +438355,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -424661,11 +438373,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -424676,10 +438388,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -424690,7 +438402,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -424699,7 +438411,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -424710,7 +438422,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -424721,7 +438433,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -424732,7 +438444,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -424746,7 +438458,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -424757,7 +438469,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -424769,7 +438481,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -424780,7 +438492,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -424793,7 +438505,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -424804,7 +438516,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -424815,7 +438527,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -424826,7 +438538,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -424839,7 +438551,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -424850,7 +438562,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -424861,7 +438573,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -424872,7 +438584,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -424884,7 +438596,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -424895,7 +438607,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -424905,7 +438617,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -424916,11 +438628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -424931,11 +438643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -424946,10 +438658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -424960,7 +438672,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -424969,36 +438716,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -425008,36 +438755,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -425048,18 +438795,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -425069,18 +438816,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -425091,18 +438838,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -425112,143 +438859,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -425258,18 +439005,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -425278,412 +439025,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -425695,18 +439442,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -425715,262 +439462,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -425979,18 +439726,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -425998,388 +439745,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -426392,249 +440139,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
+        let __sym0 = __pop_Variant39(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action14::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant39(__nt), __end));
+        (1, 110)
+    }
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -426647,59 +440409,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__IfStmt::IfStmtParser;
+pub(crate) use self::__parse__IdentWithOptionalType::IdentWithOptionalTypeParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Import {
+mod __parse__IfStmt {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -426781,45 +440543,333 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
+        0, 83, -121, -121, 84, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 85, 86, 0, 87, 88, 89, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 90, -121, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        0, 0, 91, -111, 0, 0, -111, 92, -111, -111, -111, 0, 0, -111, 93, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 16, -166, -166, -166, -166, -166, 0, 17, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 18, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 19, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 73, 2, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 0, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 17, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 18, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
+        70, 0, 0, 8, 0, 9, -82, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
         // State 19
+        0, 0, 0, 78, 0, 0, 115, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 20
+        0, -166, -166, -166, -166, 16, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 116, -166, -166, -166, 0, -166, -166, -166, 18, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
+        // State 21
+        0, 0, 91, -110, 0, 0, -110, 92, -110, -110, -110, 0, 0, -110, 93, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        // State 22
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0,
+        // State 23
+        0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 24
+        0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 73, 2, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 29, 0, 0, 0, 125, 0,
+        // State 25
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 26
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 27
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 28
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 29
+        0, 83, -120, -120, 84, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 85, 86, 0, 87, 88, 89, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 90, -120, 0,
+        // State 30
+        70, 0, 0, 8, 0, 9, -84, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 31
+        0, 0, 0, 78, 0, 0, -81, 0, 79, 130, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 32
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 33
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        // State 34
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 35
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 36
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 37
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 38
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 39
+        0, 0, 0, 78, 0, 0, -83, 0, 79, 138, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 40
+        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 41
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 42
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 43
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 44
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 45
+        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 46
+        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 47
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 48
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 49
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 50
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 51
+        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 52
+        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 53
+        0, 0, 0, 78, 0, 0, 0, 0, 79, -192, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, -192, 0,
+        // State 54
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 55
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 56
+        0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 57
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 58
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 59
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 60
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 61
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 62
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        // State 63
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        // State 64
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
+        // State 65
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
+        // State 66
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        // State 67
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        // State 68
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        // State 69
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
+        // State 70
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 71
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        // State 72
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        // State 73
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        // State 74
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
+        // State 75
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
+        // State 76
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 77
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        // State 78
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        // State 79
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        // State 80
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        // State 81
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        // State 82
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        // State 83
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 84
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 85
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        // State 86
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        // State 87
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 88
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 89
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 90
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 91
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 92
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 93
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
+        // State 94
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        // State 95
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 105
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 106
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
+        // State 107
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        // State 108
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 109
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        // State 110
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
+        // State 111
+        0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 112
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        // State 113
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        // State 114
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        // State 115
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 116
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
+        // State 117
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
+        // State 118
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 119
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 120
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        // State 121
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        // State 122
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        // State 123
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
+        // State 124
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
+        // State 125
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        // State 126
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 127
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 128
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        // State 129
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 130
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        // State 131
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0,
+        // State 132
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 133
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 134
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 135
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 136
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
+        // State 137
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 138
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 139
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 140
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 141
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 142
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 143
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 144
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 145
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 146
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 147
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 148
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 149
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 150
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 151
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 152
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 153
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 154
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        // State 155
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 156
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 157
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 158
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 159
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 160
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 161
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 162
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -426836,7 +440886,7 @@
         // State 4
         0,
         // State 5
-        -230,
+        0,
         // State 6
         0,
         // State 7
@@ -426846,7 +440896,7 @@
         // State 9
         0,
         // State 10
-        -144,
+        0,
         // State 11
         0,
         // State 12
@@ -426864,21 +440914,416 @@
         // State 18
         0,
         // State 19
+        0,
+        // State 20
+        0,
+        // State 21
+        0,
+        // State 22
+        0,
+        // State 23
+        0,
+        // State 24
+        0,
+        // State 25
+        0,
+        // State 26
+        0,
+        // State 27
+        0,
+        // State 28
+        0,
+        // State 29
+        0,
+        // State 30
+        0,
+        // State 31
+        0,
+        // State 32
+        0,
+        // State 33
+        0,
+        // State 34
+        0,
+        // State 35
+        0,
+        // State 36
+        0,
+        // State 37
+        0,
+        // State 38
+        0,
+        // State 39
+        0,
+        // State 40
+        0,
+        // State 41
+        0,
+        // State 42
+        0,
+        // State 43
+        0,
+        // State 44
+        0,
+        // State 45
+        0,
+        // State 46
+        0,
+        // State 47
+        0,
+        // State 48
+        0,
+        // State 49
+        0,
+        // State 50
+        0,
+        // State 51
+        0,
+        // State 52
+        0,
+        // State 53
+        0,
+        // State 54
+        0,
+        // State 55
+        0,
+        // State 56
+        0,
+        // State 57
+        0,
+        // State 58
+        0,
+        // State 59
+        0,
+        // State 60
+        0,
+        // State 61
+        -232,
+        // State 62
+        0,
+        // State 63
+        0,
+        // State 64
+        0,
+        // State 65
+        0,
+        // State 66
+        0,
+        // State 67
+        0,
+        // State 68
+        0,
+        // State 69
+        0,
+        // State 70
+        0,
+        // State 71
+        0,
+        // State 72
+        0,
+        // State 73
+        0,
+        // State 74
+        0,
+        // State 75
+        0,
+        // State 76
+        -144,
+        // State 77
+        0,
+        // State 78
+        0,
+        // State 79
+        0,
+        // State 80
+        0,
+        // State 81
+        0,
+        // State 82
+        0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
+        // State 105
+        0,
+        // State 106
+        0,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
+        // State 111
+        0,
+        // State 112
+        0,
+        // State 113
+        0,
+        // State 114
+        0,
+        // State 115
+        0,
+        // State 116
+        0,
+        // State 117
         -143,
+        // State 118
+        0,
+        // State 119
+        0,
+        // State 120
+        0,
+        // State 121
+        0,
+        // State 122
+        0,
+        // State 123
+        0,
+        // State 124
+        -80,
+        // State 125
+        0,
+        // State 126
+        0,
+        // State 127
+        0,
+        // State 128
+        0,
+        // State 129
+        0,
+        // State 130
+        0,
+        // State 131
+        0,
+        // State 132
+        0,
+        // State 133
+        0,
+        // State 134
+        0,
+        // State 135
+        0,
+        // State 136
+        0,
+        // State 137
+        0,
+        // State 138
+        0,
+        // State 139
+        0,
+        // State 140
+        0,
+        // State 141
+        0,
+        // State 142
+        0,
+        // State 143
+        0,
+        // State 144
+        0,
+        // State 145
+        0,
+        // State 146
+        0,
+        // State 147
+        0,
+        // State 148
+        0,
+        // State 149
+        0,
+        // State 150
+        0,
+        // State 151
+        0,
+        // State 152
+        0,
+        // State 153
+        0,
+        // State 154
+        0,
+        // State 155
+        0,
+        // State 156
+        0,
+        // State 157
+        0,
+        // State 158
+        0,
+        // State 159
+        0,
+        // State 160
+        0,
+        // State 161
+        0,
+        // State 162
+        0,
+        // State 163
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            21 => 4,
-            24 => 2,
-            43 => 13,
-            48 => 6,
+            1 => 23,
+            15 => 30,
+            30 => 41,
+            33 => 46,
+            36 => 99,
+            37 => 12,
+            38 => 13,
+            39 => 10,
+            40 => match state {
+                22 => 117,
+                38 => 136,
+                50 => 154,
+                57 => 161,
+                _ => 76,
+            },
+            41 => 111,
+            45 => 131,
+            46 => match state {
+                52 => 157,
+                56 => 160,
+                _ => 138,
+            },
+            49 => match state {
+                8 => 19,
+                15 => 31,
+                17 => 32,
+                27 => 37,
+                28 => 38,
+                30 => 39,
+                35 => 43,
+                42 => 49,
+                44 => 50,
+                48 => 53,
+                54 => 57,
+                55 => 58,
+                59 => 60,
+                _ => 2,
+            },
+            50 => 62,
+            51 => match state {
+                6 => 94,
+                7 => 95,
+                9 => 98,
+                12 => 109,
+                18 => 113,
+                _ => 63,
+            },
+            52 => match state {
+                13 => 29,
+                _ => 3,
+            },
+            53 => match state {
+                10 => 21,
+                _ => 4,
+            },
+            55 => match state {
+                11 | 24 => 100,
+                _ => 64,
+            },
+            58 => 101,
             60 => match state {
-                2 => 9,
-                3 => 14,
-                4 => 15,
-                _ => 7,
+                8 | 35 | 42 | 48 | 55 | 59 => 20,
+                23 => 34,
+                16 => 112,
+                25 => 126,
+                26 => 127,
+                33 | 41 => 132,
+                36 => 135,
+                40 | 45..=46 | 51..=52 | 56 => 139,
+                47 => 149,
+                _ => 5,
+            },
+            62 => 96,
+            63 => match state {
+                0 => 61,
+                _ => 102,
+            },
+            65 => 103,
+            69 => 24,
+            72 => match state {
+                11 | 24 => 104,
+                23 => 118,
+                _ => 65,
+            },
+            73 => match state {
+                14 => 110,
+                _ => 93,
+            },
+            74 => 14,
+            76 => 47,
+            78 => 105,
+            79 => match state {
+                24 => 123,
+                _ => 106,
             },
-            63 => 5,
+            83 => match state {
+                35 => 134,
+                42 => 145,
+                48 => 153,
+                55 => 158,
+                59 => 162,
+                _ => 97,
+            },
+            84 => match state {
+                41 => 142,
+                _ => 133,
+            },
+            86 => 66,
+            87 => 67,
+            88 => match state {
+                45 => 146,
+                46 => 147,
+                51 => 155,
+                _ => 140,
+            },
+            90 => 6,
+            91 => 68,
+            92 => 107,
             _ => 0,
         }
     }
@@ -426973,7 +441418,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Import;
+        type Success = ast::IfStmt;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -427994,19 +442439,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -428018,37 +442463,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -428060,7 +442505,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -428072,7 +442517,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -428090,43 +442535,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -428144,19 +442589,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -428168,7 +442613,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -428180,7 +442625,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -428192,25 +442637,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -428223,108 +442668,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -428336,43 +442781,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -428384,14 +442829,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -428409,248 +442854,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => __state_machine::SimulatedReduce::Accept,
             230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 110,
+                    nonterminal_produced: 109,
                 }
             }
-            231 => {
+            231 => __state_machine::SimulatedReduce::Accept,
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct ImportParser {
+    pub(crate) struct IfStmtParser {
         _priv: (),
     }
 
-    impl ImportParser {
-        pub(crate) fn new() -> ImportParser {
-            ImportParser {
+    impl IfStmtParser {
+        pub(crate) fn new() -> IfStmtParser {
+            IfStmtParser {
                 _priv: (),
             }
         }
@@ -428662,7 +443125,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Import, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::IfStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -428713,7 +443176,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Import,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::IfStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -429404,18 +443867,18 @@
                 __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             229 => {
-                // __Import = Import => ActionFn(34);
-                let __sym0 = __pop_Variant40(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action34::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             230 => {
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             231 => {
-                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __IfStmt = IfStmt => ActionFn(14);
+                let __sym0 = __pop_Variant39(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action14::<>(__sym0);
+                return Some(Ok(__nt));
             }
             232 => {
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -429468,6 +443931,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -430118,10 +444590,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -430132,11 +444604,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -430147,11 +444619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -430162,13 +444634,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -430179,11 +444651,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -430194,10 +444666,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -430208,11 +444680,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -430223,10 +444695,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -430237,11 +444709,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -430252,10 +444724,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -430266,13 +444738,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -430283,13 +444755,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -430300,10 +444772,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -430314,14 +444786,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -430332,14 +444804,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -430350,10 +444822,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -430364,13 +444836,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -430381,13 +444853,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -430398,10 +444870,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -430412,14 +444884,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -430430,14 +444902,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -430448,10 +444920,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -430462,13 +444934,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -430479,10 +444951,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -430493,11 +444965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -430508,13 +444980,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -430525,14 +444997,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -430543,13 +445015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -430560,10 +445032,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -430574,11 +445046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -430589,13 +445061,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -430606,14 +445078,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -430624,13 +445096,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -430641,10 +445113,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -430655,11 +445127,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -430670,13 +445142,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -430687,14 +445159,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -430705,13 +445177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -430722,10 +445194,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -430736,11 +445208,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -430751,13 +445223,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -430768,14 +445240,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -430786,13 +445258,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -430803,10 +445275,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -430817,11 +445289,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -430832,13 +445304,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -430849,14 +445321,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -430867,13 +445339,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -430884,10 +445356,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -430898,11 +445370,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -430913,13 +445385,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -430930,14 +445402,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -430948,13 +445420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -430965,10 +445437,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -430979,11 +445451,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -430994,13 +445466,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -431011,14 +445483,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -431029,10 +445501,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -431043,10 +445515,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -431057,14 +445529,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -431075,7 +445547,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -431083,7 +445555,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -431094,14 +445566,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -431112,7 +445584,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -431120,7 +445592,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -431131,11 +445603,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431146,11 +445618,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431161,11 +445633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431176,11 +445648,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431191,11 +445663,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431206,11 +445678,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431221,11 +445693,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431236,11 +445708,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -431251,11 +445723,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -431266,11 +445738,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -431281,11 +445753,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -431296,11 +445768,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -431311,11 +445783,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -431326,11 +445798,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -431341,11 +445813,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -431356,11 +445828,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -431371,14 +445843,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -431389,11 +445861,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -431404,10 +445876,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -431418,13 +445890,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -431435,11 +445907,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -431450,11 +445922,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -431465,10 +445937,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -431479,13 +445951,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -431496,11 +445968,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -431511,11 +445983,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -431526,10 +445998,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -431540,13 +446012,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -431557,11 +446029,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -431572,11 +446044,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -431587,10 +446059,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -431601,13 +446073,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -431618,11 +446090,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -431633,11 +446105,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -431648,10 +446120,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -431662,13 +446134,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -431679,11 +446151,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -431694,11 +446166,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -431709,10 +446181,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -431723,13 +446195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -431740,11 +446212,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -431755,7 +446227,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -431766,7 +446238,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -431777,11 +446249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -431792,10 +446264,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -431806,13 +446278,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -431823,11 +446295,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -431838,14 +446310,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -431856,11 +446328,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -431871,11 +446343,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -431886,14 +446358,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -431904,13 +446376,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -431921,13 +446393,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -431938,13 +446410,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -431955,11 +446427,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -431970,14 +446442,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -431988,11 +446460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -432003,14 +446475,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -432021,11 +446493,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -432036,11 +446508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -432051,10 +446523,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -432065,7 +446537,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -432073,7 +446545,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -432084,14 +446556,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -432102,11 +446574,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -432117,10 +446589,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -432131,7 +446603,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -432140,7 +446612,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -432151,7 +446623,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -432162,7 +446634,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -432173,7 +446645,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -432187,7 +446659,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -432198,7 +446670,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -432210,7 +446682,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -432221,7 +446693,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -432234,7 +446706,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -432245,7 +446717,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -432256,7 +446728,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -432267,7 +446739,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -432280,7 +446752,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -432291,7 +446763,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -432302,7 +446774,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -432313,7 +446785,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -432325,7 +446797,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -432336,7 +446808,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -432346,7 +446818,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -432357,11 +446829,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -432372,11 +446844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -432387,10 +446859,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -432401,7 +446873,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -432410,36 +446917,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -432449,36 +446956,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -432489,18 +446996,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -432510,18 +447017,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -432532,18 +447039,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -432553,143 +447060,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -432699,18 +447206,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -432719,412 +447226,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -433136,18 +447643,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -433156,262 +447663,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -433420,18 +447927,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -433439,388 +447946,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -433833,249 +448340,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
-        let __sym0 = __pop_Variant39(__symbols);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __Import = Import => ActionFn(35);
+        let __sym0 = __pop_Variant40(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action35::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant40(__nt), __end));
+        (1, 111)
+    }
+    pub(crate) fn __reduce233<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -434088,59 +448610,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__Import::ImportParser;
+pub(crate) use self::__parse__IfStmt::IfStmtParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__LetStmt {
+mod __parse__Import {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -434222,231 +448744,45 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 5
-        0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
         // State 7
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0,
         // State 9
-        0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0,
         // State 10
-        0, 0, 0, 71, 0, 0, 0, 0, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 76, -121, -121, 77, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 78, 79, 0, 80, 81, 82, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 83, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
         // State 12
-        0, 0, 84, -111, 0, 0, -111, 85, -111, -111, -111, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0,
         // State 13
-        0, -164, -164, -164, -164, 24, -164, -164, -164, -164, -164, 0, 25, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 26, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0,
         // State 14
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
         // State 15
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 29, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
         // State 16
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
         // State 18
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
         // State 19
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 20
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 21
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 22
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 25, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 26, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
-        // State 23
-        61, 0, 0, 16, 0, 17, -82, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 25
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
-        // State 27
-        0, -164, -164, -164, -164, 24, -164, -164, -164, -164, -164, 0, 25, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 26, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
-        // State 28
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 29
-        0, 0, 0, 71, 0, 0, 103, 0, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-        // State 30
-        0, 0, 0, 71, 0, 0, 0, 0, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-        // State 31
-        0, 0, 84, -110, 0, 0, -110, 85, -110, -110, -110, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
-        // State 32
-        0, 76, -120, -120, 77, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 78, 79, 0, 80, 81, 82, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 83, -120, 0,
-        // State 33
-        61, 0, 0, 16, 0, 17, -84, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 34
-        0, 0, 0, 71, 0, 0, -81, 0, 72, 106, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-        // State 35
-        0, 0, 0, 71, 0, 0, 0, 0, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-        // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
-        // State 37
-        0, 0, 0, 71, 0, 0, -83, 0, 72, 111, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
-        // State 38
-        61, 0, 0, 16, 0, 17, 0, 18, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 43, 0, 0, 64, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 66,
-        // State 39
-        0, 0, 0, 71, 0, 0, 0, 0, 72, -190, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, -190, 0,
-        // State 40
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 41
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 42
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
-        // State 43
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 44
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 45
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 46
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 47
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 48
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 49
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 50
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 51
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 52
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
-        // State 53
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
-        // State 54
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
-        // State 55
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
-        // State 56
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 57
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
-        // State 58
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
-        // State 59
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
-        // State 60
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
-        // State 61
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
-        // State 62
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
-        // State 63
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
-        // State 64
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
-        // State 65
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
-        // State 66
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 67
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 68
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 69
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 70
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
-        // State 71
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
-        // State 72
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
-        // State 73
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
-        // State 74
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
-        // State 75
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
-        // State 76
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
-        // State 77
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 78
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 79
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 80
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 81
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 82
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 83
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 84
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 85
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 86
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
-        // State 87
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
-        // State 88
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
-        // State 89
-        0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 90
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
-        // State 91
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 92
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 93
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 94
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
-        // State 95
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
-        // State 96
-        0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 97
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
-        // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0,
-        // State 99
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 100
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 101
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
-        // State 102
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
-        // State 103
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
-        // State 104
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
-        // State 105
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 106
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
-        // State 107
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 108
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 110
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 112
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -434463,7 +448799,7 @@
         // State 4
         0,
         // State 5
-        0,
+        -233,
         // State 6
         0,
         // State 7
@@ -434475,11 +448811,11 @@
         // State 10
         -146,
         // State 11
-        -121,
+        0,
         // State 12
-        -111,
+        0,
         // State 13
-        -164,
+        0,
         // State 14
         0,
         // State 15
@@ -434491,273 +448827,21 @@
         // State 18
         0,
         // State 19
-        0,
-        // State 20
-        0,
-        // State 21
-        0,
-        // State 22
-        -163,
-        // State 23
-        0,
-        // State 24
-        0,
-        // State 25
-        0,
-        // State 26
-        0,
-        // State 27
-        -164,
-        // State 28
-        0,
-        // State 29
-        0,
-        // State 30
         -145,
-        // State 31
-        -110,
-        // State 32
-        -120,
-        // State 33
-        0,
-        // State 34
-        0,
-        // State 35
-        0,
-        // State 36
-        0,
-        // State 37
-        0,
-        // State 38
-        0,
-        // State 39
-        0,
-        // State 40
-        -231,
-        // State 41
-        0,
-        // State 42
-        -138,
-        // State 43
-        0,
-        // State 44
-        0,
-        // State 45
-        0,
-        // State 46
-        0,
-        // State 47
-        0,
-        // State 48
-        0,
-        // State 49
-        0,
-        // State 50
-        0,
-        // State 51
-        0,
-        // State 52
-        -117,
-        // State 53
-        -119,
-        // State 54
-        -197,
-        // State 55
-        -211,
-        // State 56
-        -148,
-        // State 57
-        -112,
-        // State 58
-        -195,
-        // State 59
-        -196,
-        // State 60
-        0,
-        // State 61
-        0,
-        // State 62
-        -209,
-        // State 63
-        -208,
-        // State 64
-        -210,
-        // State 65
-        0,
-        // State 66
-        0,
-        // State 67
-        0,
-        // State 68
-        0,
-        // State 69
-        0,
-        // State 70
-        0,
-        // State 71
-        0,
-        // State 72
-        0,
-        // State 73
-        0,
-        // State 74
-        0,
-        // State 75
-        0,
-        // State 76
-        0,
-        // State 77
-        0,
-        // State 78
-        0,
-        // State 79
-        0,
-        // State 80
-        0,
-        // State 81
-        0,
-        // State 82
-        0,
-        // State 83
-        0,
-        // State 84
-        0,
-        // State 85
-        0,
-        // State 86
-        -167,
-        // State 87
-        -116,
-        // State 88
-        -114,
-        // State 89
-        0,
-        // State 90
-        -115,
-        // State 91
-        -147,
-        // State 92
-        0,
-        // State 93
-        0,
-        // State 94
-        -118,
-        // State 95
-        -168,
-        // State 96
-        0,
-        // State 97
-        -165,
-        // State 98
-        0,
-        // State 99
-        0,
-        // State 100
-        0,
-        // State 101
-        -113,
-        // State 102
-        -194,
-        // State 103
-        -198,
-        // State 104
-        -124,
-        // State 105
-        0,
-        // State 106
-        -166,
-        // State 107
-        0,
-        // State 108
-        -189,
-        // State 109
-        0,
-        // State 110
-        0,
-        // State 111
-        0,
-        // State 112
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 33,
-            30 => 36,
-            33 => 8,
-            37 => 20,
-            38 => 21,
-            39 => 19,
-            41 => 96,
-            45 => 98,
-            46 => match state {
-                9 => 69,
-                _ => 50,
-            },
-            49 => match state {
-                16 => 29,
-                18 => 30,
-                23 => 34,
-                25 => 35,
-                33 => 37,
-                38 => 39,
-                _ => 10,
-            },
-            50 => 52,
-            51 => match state {
-                14 => 87,
-                15 => 88,
-                17 => 90,
-                20 => 94,
-                28 => 101,
-                _ => 53,
-            },
-            52 => match state {
-                21 => 32,
-                _ => 11,
-            },
-            53 => match state {
-                19 => 31,
-                _ => 12,
-            },
-            55 => 54,
+            21 => 4,
+            24 => 2,
+            43 => 13,
+            48 => 6,
             60 => match state {
-                7 | 16 | 18 | 38 => 13,
-                1 => 41,
-                2 => 43,
-                3 | 5..=6 | 8..=9 => 44,
-                4 => 47,
-                24 => 97,
-                26 | 36 => 99,
-                _ => 27,
-            },
-            64 => 40,
-            71 => 55,
-            72 => match state {
-                22 => 95,
-                _ => 86,
-            },
-            73 => 22,
-            75 => 4,
-            82 => match state {
-                16 => 89,
-                18 => 91,
-                38 => 112,
-                _ => 56,
-            },
-            83 => match state {
-                36 => 107,
-                _ => 100,
-            },
-            85 => 57,
-            86 => 58,
-            87 => match state {
-                3 => 45,
-                5 => 49,
-                8 => 66,
-                _ => 51,
+                2 => 9,
+                3 => 14,
+                4 => 15,
+                _ => 7,
             },
-            89 => 14,
-            90 => 59,
+            64 => 5,
             _ => 0,
         }
     }
@@ -434852,7 +448936,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::LetStmt;
+        type Success = ast::Import;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -435873,19 +449957,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -435897,37 +449981,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -435939,7 +450023,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -435951,7 +450035,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -435969,43 +450053,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -436023,19 +450107,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -436047,7 +450131,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -436059,7 +450143,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -436071,25 +450155,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -436102,108 +450186,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -436215,43 +450299,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -436263,14 +450347,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -436288,248 +450372,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => __state_machine::SimulatedReduce::Accept,
             231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 111,
+                    nonterminal_produced: 110,
                 }
             }
-            232 => {
+            232 => __state_machine::SimulatedReduce::Accept,
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct LetStmtParser {
+    pub(crate) struct ImportParser {
         _priv: (),
     }
 
-    impl LetStmtParser {
-        pub(crate) fn new() -> LetStmtParser {
-            LetStmtParser {
+    impl ImportParser {
+        pub(crate) fn new() -> ImportParser {
+            ImportParser {
                 _priv: (),
             }
         }
@@ -436541,7 +450643,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::LetStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Import, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -436592,7 +450694,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::LetStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Import,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -437286,18 +451388,18 @@
                 __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             230 => {
-                // __LetStmt = LetStmt => ActionFn(8);
-                let __sym0 = __pop_Variant41(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action8::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             231 => {
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             232 => {
-                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Import = Import => ActionFn(35);
+                let __sym0 = __pop_Variant40(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action35::<>(__sym0);
+                return Some(Ok(__nt));
             }
             233 => {
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -437347,6 +451449,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -437997,10 +452108,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -438011,11 +452122,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -438026,11 +452137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -438041,13 +452152,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -438058,11 +452169,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -438073,10 +452184,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -438087,11 +452198,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -438102,10 +452213,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -438116,11 +452227,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -438131,10 +452242,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -438145,13 +452256,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -438162,13 +452273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -438179,10 +452290,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -438193,14 +452304,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -438211,14 +452322,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -438229,10 +452340,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -438243,13 +452354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -438260,13 +452371,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -438277,10 +452388,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -438291,14 +452402,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -438309,14 +452420,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -438327,10 +452438,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -438341,13 +452452,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -438358,10 +452469,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -438372,11 +452483,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -438387,13 +452498,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -438404,14 +452515,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -438422,13 +452533,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -438439,10 +452550,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -438453,11 +452564,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -438468,13 +452579,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -438485,14 +452596,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -438503,13 +452614,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -438520,10 +452631,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -438534,11 +452645,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -438549,13 +452660,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -438566,14 +452677,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -438584,13 +452695,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -438601,10 +452712,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -438615,11 +452726,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -438630,13 +452741,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -438647,14 +452758,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -438665,13 +452776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -438682,10 +452793,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -438696,11 +452807,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -438711,13 +452822,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -438728,14 +452839,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -438746,13 +452857,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -438763,10 +452874,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -438777,11 +452888,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -438792,13 +452903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -438809,14 +452920,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -438827,13 +452938,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -438844,10 +452955,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -438858,11 +452969,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -438873,13 +452984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -438890,14 +453001,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -438908,10 +453019,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -438922,10 +453033,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -438936,14 +453047,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -438954,7 +453065,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -438962,7 +453073,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -438973,14 +453084,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -438991,7 +453102,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -438999,7 +453110,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -439010,11 +453121,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439025,11 +453136,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439040,11 +453151,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439055,11 +453166,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439070,11 +453181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439085,11 +453196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439100,11 +453211,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439115,11 +453226,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -439130,11 +453241,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -439145,11 +453256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -439160,11 +453271,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -439175,11 +453286,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -439190,11 +453301,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -439205,11 +453316,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -439220,11 +453331,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -439235,11 +453346,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -439250,14 +453361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -439268,11 +453379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -439283,10 +453394,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -439297,13 +453408,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -439314,11 +453425,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -439329,11 +453440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -439344,10 +453455,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -439358,13 +453469,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -439375,11 +453486,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -439390,11 +453501,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -439405,10 +453516,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -439419,13 +453530,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -439436,11 +453547,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -439451,11 +453562,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -439466,10 +453577,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -439480,13 +453591,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -439497,11 +453608,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -439512,11 +453623,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -439527,10 +453638,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -439541,13 +453652,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -439558,11 +453669,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -439573,11 +453684,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -439588,10 +453699,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -439602,13 +453713,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -439619,11 +453730,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -439634,7 +453745,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -439645,7 +453756,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -439656,11 +453767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -439671,10 +453782,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -439685,13 +453796,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -439702,11 +453813,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -439717,14 +453828,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -439735,11 +453846,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -439750,11 +453861,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -439765,14 +453876,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -439783,13 +453894,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -439800,13 +453911,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -439817,13 +453928,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -439834,11 +453945,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -439849,14 +453960,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -439867,11 +453978,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -439882,14 +453993,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -439900,11 +454011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -439915,11 +454026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -439930,10 +454041,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -439944,7 +454055,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -439952,7 +454063,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -439963,14 +454074,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -439981,11 +454092,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -439996,10 +454107,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -440010,7 +454121,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -440019,7 +454130,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -440030,7 +454141,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -440041,7 +454152,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -440052,7 +454163,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -440066,7 +454177,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -440077,7 +454188,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -440089,7 +454200,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -440100,7 +454211,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -440113,7 +454224,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -440124,7 +454235,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -440135,7 +454246,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -440146,7 +454257,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -440159,7 +454270,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -440170,7 +454281,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -440181,7 +454292,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -440192,7 +454303,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -440204,7 +454315,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -440215,7 +454326,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -440225,7 +454336,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -440236,11 +454347,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -440251,11 +454362,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -440266,10 +454377,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -440280,7 +454391,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -440289,36 +454435,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -440328,36 +454474,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -440368,18 +454514,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -440389,18 +454535,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -440411,18 +454557,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -440432,143 +454578,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -440578,18 +454724,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -440598,412 +454744,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -441015,18 +455161,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -441035,262 +455181,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -441299,18 +455445,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -441318,388 +455464,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -441712,249 +455858,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
-        let __sym0 = __pop_Variant40(__symbols);
+        // __LetStmt = LetStmt => ActionFn(9);
+        let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        let __nt = super::__action9::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -441967,59 +456128,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__LetStmt::LetStmtParser;
+pub(crate) use self::__parse__Import::ImportParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Module {
+mod __parse__LetStmt {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -442101,535 +456262,241 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 111, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 112, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 111, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 112, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 111, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 112, 0, 0, 8, 0, 0, 0, 0, 0, 115, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
+        0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 111, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 112, 0, 0, 8, 0, 0, 0, 0, 0, 122, 0,
+        0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 73, 0, 0, 0, 0, 74, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 78, -121, -121, 79, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 80, 81, 0, 82, 83, 84, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 85, -121, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
+        0, 0, 86, -111, 0, 0, -111, 87, -111, -111, -111, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 13
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 24, -166, -166, -166, -166, -166, 0, 25, 0, -166, 0, 90, 0, -166, -166, 0, -166, -166, -166, 26, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 29, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 16
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 19
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 20
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 21
-        0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 22
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 25, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 26, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 23
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, -82, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 26
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 27
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, -166, -166, -166, -166, 24, -166, -166, -166, -166, -166, 0, 25, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 26, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 29
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 73, 0, 0, 106, 0, 74, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
         // State 30
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 73, 0, 0, 0, 0, 74, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
         // State 31
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 86, -110, 0, 0, -110, 87, -110, -110, -110, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 32
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 78, -120, -120, 79, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 80, 81, 0, 82, 83, 84, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 85, -120, 0,
         // State 33
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        63, 0, 0, 16, 0, 17, -84, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 34
-        0, 189, -121, -121, 190, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 191, 192, 0, 193, 194, 195, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 196, -121, 0,
+        0, 0, 0, 73, 0, 0, -81, 0, 74, 109, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
         // State 35
-        0, 0, 197, -111, 0, 0, -111, 198, -111, -111, -111, 0, 0, -111, 199, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, -164, -164, -164, -164, 51, -164, -164, -164, -164, -164, 0, 52, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 53, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, 0, 0, 73, 0, 0, 0, 0, 74, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
         // State 37
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 38
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 54, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 73, 0, 0, -83, 0, 74, 115, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0,
         // State 39
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        63, 0, 0, 16, 0, 17, 0, 18, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 44, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 40
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 73, 0, 0, 0, 0, 74, -192, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, -192, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 43
-        0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 104, 62, 0, 0, 63, 0, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 44
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 46
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 48
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 52, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 53, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 50
-        166, 0, 0, 39, 0, 40, -82, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 51
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 52
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 54
-        0, 0, 0, 183, 0, 0, 224, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 55
-        0, -164, -164, -164, -164, 51, -164, -164, -164, -164, -164, 0, 52, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 53, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, -164, -164, -164, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 56
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0,
         // State 57
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 58
-        0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 59
-        0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 104, 62, 0, 0, 63, 0, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 233, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 61
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 62
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 63
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 64
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 65
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 66
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 67
-        0, 0, 197, -110, 0, 0, -110, 198, -110, -110, -110, 0, 0, -110, 199, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 68
-        0, 189, -120, -120, 190, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 191, 192, 0, 193, 194, 195, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 196, -120, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 69
-        166, 0, 0, 39, 0, 40, -84, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 70
-        0, 0, 0, 183, 0, 0, -81, 0, 184, 240, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 71
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 75
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 76
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 188, 0, 0, 0,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 78
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 79
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 188, 0, 0, 0,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 80
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 82
-        0, 0, 0, 183, 0, 0, -83, 0, 184, 251, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 84
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 85
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 86
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 87
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 88
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 89
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 91
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 188, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 93
-        0, 0, 0, 130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 94
-        0, 0, 0, 183, 0, 0, 0, 0, 184, -190, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 188, 0, 0, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 98
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 99
-        166, 0, 0, 39, 0, 40, 0, 41, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 104, 0, 0, 169, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 171,
+        0, 0, 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 100
-        0, 0, 0, 183, 0, 0, 0, 0, 184, 0, 185, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, -160, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, 0, 0, -160, 0, 0, 0, 0, 0, -160, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, -159, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, 0, 0, -159, 0, 0, 0, 0, 0, -159, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 106
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, -149, -149, 0, 0, 0, 0, 0, 0, 0, -149, 0, -149, 0, 0, -149, -149, 0, 0, 0, 0, 0, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, -162, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, 0, 0, -162, 0, 0, 0, 0, 0, -162, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 0, -153, -153, 0, 0, 0, 0, 0, 0, 0, -153, 0, -153, 0, 0, -153, 0, 0, 0, 0, 0, -153, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 109
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, -161, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, 0, 0, -161, 0, 0, 0, 0, 0, -161, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 110
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 112
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, -150, -150, 0, 0, 0, 0, 0, 0, 0, -150, 0, -150, 0, 0, -150, -150, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 113
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, -154, -154, 0, 0, 0, 0, 0, 0, 0, -154, 0, -154, 0, 0, -154, 0, 0, 0, 0, 0, -154, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 114
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, -158, -158, 0, 0, 0, 0, 0, 0, 0, -158, 0, -158, 0, 0, -158, 0, 0, 0, 0, 0, -158, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 115
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 116
-        0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 117
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 118
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
-        // State 119
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
-        // State 120
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
-        // State 121
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, -157, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, 0, 0, -157, 0, 0, 0, 0, 0, -157, 0,
-        // State 122
-        0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 123
-        0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 124
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0,
-        // State 125
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, -144, -144, 0, 0, 0, 0, 0, 0, 0, -144, 0, -144, 0, 0, -144, -144, 0, 0, 0, 0, 0, 0,
-        // State 126
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
-        // State 127
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0,
-        // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 130
-        0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 131
-        0, 0, 0, 0, 0, 0, -85, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 132
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 133
-        0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 135
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 136
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0,
-        // State 137
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 138
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
-        // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0,
-        // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0,
-        // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
-        // State 142
-        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0,
-        // State 143
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 144
-        0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 145
-        0, 0, 0, 0, 0, 0, -87, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 146
-        0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 147
-        0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 149
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
-        // State 150
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 151
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
-        // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, -185, 0, -185, 0, 0, -185, 0, 0, 0, 0, 0, -185, 0,
-        // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
-        // State 154
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
-        // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 156
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
-        // State 157
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 158
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
-        // State 159
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
-        // State 160
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
-        // State 161
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
-        // State 162
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
-        // State 163
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
-        // State 164
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
-        // State 165
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
-        // State 166
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
-        // State 167
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
-        // State 168
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
-        // State 169
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
-        // State 170
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
-        // State 171
-        0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 172
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, -137, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, 0, 0, -137, 0, 0, 0, 0, 0, -137, 0,
-        // State 173
-        0, 0, 0, 0, 0, 0, -125, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 174
-        0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 175
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 176
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
-        // State 177
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0,
-        // State 178
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
-        // State 179
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, -143, -143, 0, 0, 0, 0, 0, 0, 0, -143, 0, -143, 0, 0, -143, -143, 0, 0, 0, 0, 0, 0,
-        // State 180
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0,
-        // State 181
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 182
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
-        // State 183
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
-        // State 184
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
-        // State 185
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, -105, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, 0, 0, -105, 0, 0, 0, 0, 0, -105, 0,
-        // State 186
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
-        // State 187
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
-        // State 188
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
-        // State 189
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
-        // State 190
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 191
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 192
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 193
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 194
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 195
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 196
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 197
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 198
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 199
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
-        // State 200
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
-        // State 201
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
-        // State 202
-        0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 203
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
-        // State 204
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, -133, 0, 0, 0, 0, 0, -133, 0,
-        // State 205
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 206
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 207
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
-        // State 208
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
-        // State 209
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 210
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 211
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 212
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
-        // State 213
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
-        // State 214
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 215
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, -135, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, 0, 0, -135, 0, 0, 0, 0, 0, -135, 0,
-        // State 216
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 238, 0,
-        // State 217
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
-        // State 218
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
-        // State 219
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
-        // State 220
-        0, 0, 0, 0, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 221
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
-        // State 222
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
-        // State 223
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
-        // State 224
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
-        // State 225
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, -136, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, 0, 0, -136, 0, 0, 0, 0, 0, -136, 0,
-        // State 226
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 227
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 228
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
-        // State 229
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
-        // State 230
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
-        // State 231
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
-        // State 232
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, -80, -80, -80, -80, -80, 0, 0, -80, 0, -80, 0, -80, -80, 0, -80, 0, -80, 0, 0, 0, -80, 0,
-        // State 233
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
-        // State 234
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 235
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 236
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, -131, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, 0, 0, -131, 0, 0, 0, 0, 0, -131, 0,
-        // State 237
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, 0, 0, -184, 0, 0, 0, 0, 0, -184, 0,
-        // State 238
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
-        // State 239
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 240
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
-        // State 241
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 0,
-        // State 242
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 243
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 244
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, -132, 0, 0, 0, 0, 0, -132, 0,
-        // State 245
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 246
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
-        // State 247
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 248
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
-        // State 249
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, -134, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, 0, 0, -134, 0, 0, 0, 0, 0, -134, 0,
-        // State 250
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 251
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 252
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 253
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 254
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 255
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 256
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, -130, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, 0, 0, -130, 0, 0, 0, 0, 0, -130, 0,
-        // State 257
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 258
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
-        // State 259
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
-        // State 260
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
-        // State 261
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 262
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 263
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
-        // State 264
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 117
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -442656,13 +456523,13 @@
         // State 9
         0,
         // State 10
-        0,
+        -148,
         // State 11
-        0,
+        -121,
         // State 12
-        0,
+        -111,
         // State 13
-        0,
+        -166,
         // State 14
         0,
         // State 15
@@ -442680,7 +456547,7 @@
         // State 21
         0,
         // State 22
-        0,
+        -165,
         // State 23
         0,
         // State 24
@@ -442690,17 +456557,17 @@
         // State 26
         0,
         // State 27
-        0,
+        -166,
         // State 28
         0,
         // State 29
         0,
         // State 30
-        0,
+        -147,
         // State 31
-        0,
+        -110,
         // State 32
-        0,
+        -120,
         // State 33
         0,
         // State 34
@@ -442718,11 +456585,11 @@
         // State 40
         0,
         // State 41
-        0,
+        -234,
         // State 42
         0,
         // State 43
-        0,
+        -138,
         // State 44
         0,
         // State 45
@@ -442742,33 +456609,33 @@
         // State 52
         0,
         // State 53
-        0,
+        -117,
         // State 54
-        0,
+        -119,
         // State 55
-        0,
+        -199,
         // State 56
         0,
         // State 57
-        0,
+        -213,
         // State 58
-        0,
+        -150,
         // State 59
-        0,
+        -112,
         // State 60
-        0,
+        -197,
         // State 61
-        0,
+        -198,
         // State 62
         0,
         // State 63
         0,
         // State 64
-        0,
+        -211,
         // State 65
-        0,
+        -210,
         // State 66
-        0,
+        -212,
         // State 67
         0,
         // State 68
@@ -442812,549 +456679,147 @@
         // State 87
         0,
         // State 88
-        0,
+        -169,
         // State 89
         0,
         // State 90
-        0,
+        -116,
         // State 91
-        0,
+        -114,
         // State 92
         0,
         // State 93
-        0,
+        -115,
         // State 94
-        0,
+        -149,
         // State 95
         0,
         // State 96
         0,
         // State 97
-        0,
+        -118,
         // State 98
-        0,
+        -170,
         // State 99
         0,
         // State 100
-        0,
+        -167,
         // State 101
-        -232,
+        0,
         // State 102
         0,
         // State 103
         0,
         // State 104
-        0,
+        -113,
         // State 105
-        0,
+        -196,
         // State 106
-        0,
+        -200,
         // State 107
-        0,
+        -124,
         // State 108
         0,
         // State 109
         0,
         // State 110
-        0,
+        -168,
         // State 111
         0,
         // State 112
-        0,
+        -191,
         // State 113
         0,
         // State 114
-        -158,
+        0,
         // State 115
         0,
         // State 116
         0,
         // State 117
         0,
-        // State 118
-        0,
-        // State 119
-        0,
-        // State 120
-        0,
-        // State 121
-        -157,
-        // State 122
-        0,
-        // State 123
-        0,
-        // State 124
-        0,
-        // State 125
-        0,
-        // State 126
-        0,
-        // State 127
-        0,
-        // State 128
-        0,
-        // State 129
-        0,
-        // State 130
-        0,
-        // State 131
-        0,
-        // State 132
-        0,
-        // State 133
-        0,
-        // State 134
-        0,
-        // State 135
-        0,
-        // State 136
-        0,
-        // State 137
-        0,
-        // State 138
-        0,
-        // State 139
-        0,
-        // State 140
-        0,
-        // State 141
-        0,
-        // State 142
-        0,
-        // State 143
-        0,
-        // State 144
-        0,
-        // State 145
-        0,
-        // State 146
-        0,
-        // State 147
-        0,
-        // State 148
-        0,
-        // State 149
-        0,
-        // State 150
-        0,
-        // State 151
-        0,
-        // State 152
-        0,
-        // State 153
-        0,
-        // State 154
-        0,
-        // State 155
-        0,
-        // State 156
-        0,
-        // State 157
-        0,
-        // State 158
-        0,
-        // State 159
-        0,
-        // State 160
-        0,
-        // State 161
-        0,
-        // State 162
-        0,
-        // State 163
-        0,
-        // State 164
-        0,
-        // State 165
-        0,
-        // State 166
-        0,
-        // State 167
-        0,
-        // State 168
-        0,
-        // State 169
-        0,
-        // State 170
-        0,
-        // State 171
-        0,
-        // State 172
-        0,
-        // State 173
-        0,
-        // State 174
-        0,
-        // State 175
-        0,
-        // State 176
-        0,
-        // State 177
-        0,
-        // State 178
-        0,
-        // State 179
-        0,
-        // State 180
-        0,
-        // State 181
-        0,
-        // State 182
-        0,
-        // State 183
-        0,
-        // State 184
-        0,
-        // State 185
-        0,
-        // State 186
-        0,
-        // State 187
-        0,
-        // State 188
-        0,
-        // State 189
-        0,
-        // State 190
-        0,
-        // State 191
-        0,
-        // State 192
-        0,
-        // State 193
-        0,
-        // State 194
-        0,
-        // State 195
-        0,
-        // State 196
-        0,
-        // State 197
-        0,
-        // State 198
-        0,
-        // State 199
-        0,
-        // State 200
-        0,
-        // State 201
-        0,
-        // State 202
-        0,
-        // State 203
-        0,
-        // State 204
-        0,
-        // State 205
-        0,
-        // State 206
-        0,
-        // State 207
-        0,
-        // State 208
-        0,
-        // State 209
-        0,
-        // State 210
-        0,
-        // State 211
-        0,
-        // State 212
-        0,
-        // State 213
-        0,
-        // State 214
-        0,
-        // State 215
-        0,
-        // State 216
-        0,
-        // State 217
-        0,
-        // State 218
-        0,
-        // State 219
-        0,
-        // State 220
-        0,
-        // State 221
-        0,
-        // State 222
-        0,
-        // State 223
-        0,
-        // State 224
-        0,
-        // State 225
-        0,
-        // State 226
-        0,
-        // State 227
-        0,
-        // State 228
-        0,
-        // State 229
-        0,
-        // State 230
-        0,
-        // State 231
-        0,
-        // State 232
-        0,
-        // State 233
-        0,
-        // State 234
-        0,
-        // State 235
-        0,
-        // State 236
-        0,
-        // State 237
-        0,
-        // State 238
-        0,
-        // State 239
-        0,
-        // State 240
-        0,
-        // State 241
-        0,
-        // State 242
-        0,
-        // State 243
-        0,
-        // State 244
-        0,
-        // State 245
-        0,
-        // State 246
-        0,
-        // State 247
-        0,
-        // State 248
-        0,
-        // State 249
-        0,
-        // State 250
-        0,
-        // State 251
-        0,
-        // State 252
-        0,
-        // State 253
-        0,
-        // State 254
-        0,
-        // State 255
-        0,
-        // State 256
-        0,
-        // State 257
-        0,
-        // State 258
-        0,
-        // State 259
-        0,
-        // State 260
-        0,
-        // State 261
-        0,
-        // State 262
-        0,
-        // State 263
-        0,
-        // State 264
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 58,
-            15 => 69,
-            18 => 21,
-            21 => 25,
-            24 => 12,
-            27 => 24,
-            30 => 83,
-            33 => 23,
-            36 => 205,
-            37 => 47,
-            38 => 48,
-            39 => 46,
-            40 => match state {
-                41 => 204,
-                44 => 215,
-                57 => 225,
-                65 => 236,
-                73 => 244,
-                76 => 246,
-                79 => 248,
-                81 => 249,
-                88 => 256,
-                91 => 259,
-                92 => 260,
-                97 => 263,
-                _ => 172,
-            },
-            41 => 220,
-            42 => match state {
-                20 => 144,
-                22 => 147,
-                30 => 174,
-                _ => 130,
-            },
-            43 => 140,
-            44 => match state {
-                45 => 216,
-                _ => 136,
-            },
-            45 => 241,
+            15 => 33,
+            30 => 37,
+            33 => 8,
+            37 => 20,
+            38 => 21,
+            39 => 19,
+            41 => 99,
+            45 => 101,
             46 => match state {
-                26 => 157,
-                32 => 181,
-                _ => 134,
+                9 => 71,
+                35 => 109,
+                _ => 51,
             },
-            47 => 104,
-            48 => 119,
             49 => match state {
-                39 => 54,
-                50 => 70,
-                52 => 71,
-                61 => 76,
-                63 => 78,
-                64 => 79,
-                69 => 82,
-                75 => 85,
-                84 => 90,
-                86 => 91,
-                89 => 94,
-                95 => 97,
-                96 => 98,
-                99 => 100,
-                _ => 33,
+                16 => 29,
+                18 => 30,
+                23 => 34,
+                25 => 36,
+                33 => 38,
+                39 => 40,
+                _ => 10,
             },
-            50 => 158,
+            50 => 53,
             51 => match state {
-                37 => 200,
-                38 => 201,
-                40 => 203,
-                47 => 218,
-                53 => 222,
-                _ => 159,
+                14 => 90,
+                15 => 91,
+                17 => 93,
+                20 => 97,
+                28 => 104,
+                _ => 54,
             },
             52 => match state {
-                48 => 68,
-                _ => 34,
+                21 => 32,
+                _ => 11,
             },
             53 => match state {
-                46 => 67,
-                _ => 35,
-            },
-            55 => match state {
-                43 | 59 => 206,
-                _ => 160,
-            },
-            56 => match state {
-                21 => 145,
-                _ => 131,
+                19 => 31,
+                _ => 12,
             },
-            58 => 207,
-            59 => 105,
+            55 => 55,
             60 => match state {
-                39 | 75 | 84 | 89 | 96 | 99 => 55,
-                58 => 74,
-                1 => 102,
-                5 => 115,
-                6 => 116,
-                7 => 118,
-                8 => 120,
-                10 => 122,
-                11 => 123,
-                12 => 124,
-                13 | 16 | 23 | 26 | 29 | 31..=32 | 42 | 56 | 66 | 80 | 87 | 93 => 127,
-                14 | 20..=22 | 30 => 132,
-                15 => 133,
-                17 | 24 | 45 => 137,
-                18 => 141,
-                19 => 142,
-                25 => 154,
-                51 => 221,
-                60 => 234,
-                62 => 235,
-                72 | 83 => 242,
-                77 => 247,
-                _ => 36,
-            },
-            62 => 208,
-            63 => match state {
-                3 => 112,
-                _ => 106,
-            },
-            64 => 209,
-            65 => 3,
-            67 => match state {
-                3 => 9,
-                _ => 4,
-            },
-            68 => 59,
-            69 => match state {
-                0 => 101,
-                _ => 107,
-            },
-            70 => match state {
-                2..=3 => 108,
-                _ => 113,
-            },
-            71 => match state {
-                43 | 59 => 210,
-                58 => 226,
-                _ => 161,
-            },
-            72 => match state {
-                49 => 219,
-                _ => 199,
-            },
-            73 => 49,
-            75 => 19,
-            77 => 211,
-            78 => match state {
-                59 => 231,
-                _ => 212,
-            },
-            79 => 109,
-            80 => match state {
-                24 => 151,
-                _ => 138,
+                7 | 16 | 18 | 39 => 13,
+                1 => 42,
+                2 => 44,
+                3 | 5..=6 | 8..=9 | 35 => 45,
+                4 => 48,
+                24 => 100,
+                26 | 37 => 102,
+                _ => 27,
             },
-            82 => match state {
-                75 => 245,
-                84 => 254,
-                89 => 258,
-                96 => 262,
-                99 => 264,
-                _ => 202,
+            62 => 56,
+            65 => 41,
+            72 => 57,
+            73 => match state {
+                22 => 98,
+                _ => 88,
             },
+            74 => 22,
+            76 => 4,
             83 => match state {
-                83 => 251,
-                _ => 243,
+                16 => 92,
+                18 => 94,
+                39 => 117,
+                _ => 58,
             },
-            85 => 162,
-            86 => 163,
-            87 => match state {
-                42 => 57,
-                56 => 73,
-                66 => 81,
-                80 => 88,
-                13 => 128,
-                23 => 148,
-                29 => 173,
-                31 => 177,
-                87 => 255,
-                93 => 261,
-                _ => 135,
+            84 => match state {
+                37 => 111,
+                _ => 103,
+            },
+            86 => 59,
+            87 => 60,
+            88 => match state {
+                3 => 46,
+                5 => 50,
+                8 => 68,
+                _ => 52,
             },
-            89 => 37,
-            90 => 164,
-            91 => 213,
+            90 => 14,
+            91 => 61,
             _ => 0,
         }
     }
@@ -443449,7 +456914,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Module;
+        type Success = ast::LetStmt;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -444470,19 +457935,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -444494,37 +457959,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -444536,7 +458001,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -444548,7 +458013,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -444566,43 +458031,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -444620,19 +458085,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -444644,7 +458109,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -444656,7 +458121,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -444668,25 +458133,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -444699,108 +458164,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -444812,43 +458277,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -444860,14 +458325,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -444885,260 +458350,278 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => __state_machine::SimulatedReduce::Accept,
             232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 112,
+                    nonterminal_produced: 111,
                 }
             }
-            233 => {
+            233 => __state_machine::SimulatedReduce::Accept,
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub struct ModuleParser {
+    pub(crate) struct LetStmtParser {
         _priv: (),
     }
 
-    impl ModuleParser {
-        pub fn new() -> ModuleParser {
-            ModuleParser {
+    impl LetStmtParser {
+        pub(crate) fn new() -> LetStmtParser {
+            LetStmtParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub fn parse<
+        pub(crate) fn parse<
             __TOKEN: __ToTriple<>,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Module, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::LetStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -445189,7 +458672,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Module,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::LetStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -445886,18 +459369,18 @@
                 __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             231 => {
-                // __Module = Module => ActionFn(35);
-                let __sym0 = __pop_Variant46(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action35::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             232 => {
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             233 => {
-                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __LetStmt = LetStmt => ActionFn(9);
+                let __sym0 = __pop_Variant41(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action9::<>(__sym0);
+                return Some(Ok(__nt));
             }
             234 => {
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -445944,6 +459427,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -446594,10 +460086,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -446608,11 +460100,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -446623,11 +460115,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -446638,13 +460130,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -446655,11 +460147,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -446670,10 +460162,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -446684,11 +460176,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -446699,10 +460191,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -446713,11 +460205,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -446728,10 +460220,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -446742,13 +460234,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -446759,13 +460251,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -446776,10 +460268,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -446790,14 +460282,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -446808,14 +460300,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -446826,10 +460318,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -446840,13 +460332,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -446857,13 +460349,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -446874,10 +460366,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -446888,14 +460380,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -446906,14 +460398,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -446924,10 +460416,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -446938,13 +460430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -446955,10 +460447,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -446969,11 +460461,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -446984,13 +460476,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -447001,14 +460493,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -447019,13 +460511,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -447036,10 +460528,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -447050,11 +460542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -447065,13 +460557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -447082,14 +460574,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -447100,13 +460592,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -447117,10 +460609,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -447131,11 +460623,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -447146,13 +460638,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -447163,14 +460655,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -447181,13 +460673,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -447198,10 +460690,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -447212,11 +460704,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -447227,13 +460719,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -447244,14 +460736,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -447262,13 +460754,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -447279,10 +460771,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -447293,11 +460785,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -447308,13 +460800,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -447325,14 +460817,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -447343,13 +460835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -447360,10 +460852,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -447374,11 +460866,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -447389,13 +460881,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -447406,14 +460898,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -447424,13 +460916,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -447441,10 +460933,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -447455,11 +460947,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -447470,13 +460962,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -447487,14 +460979,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -447505,10 +460997,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -447519,10 +461011,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -447533,14 +461025,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -447551,7 +461043,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -447559,7 +461051,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -447570,14 +461062,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -447588,7 +461080,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -447596,7 +461088,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -447607,11 +461099,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447622,11 +461114,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447637,11 +461129,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447652,11 +461144,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447667,11 +461159,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447682,11 +461174,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447697,11 +461189,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447712,11 +461204,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -447727,11 +461219,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -447742,11 +461234,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -447757,11 +461249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -447772,11 +461264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -447787,11 +461279,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -447802,11 +461294,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -447817,11 +461309,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -447832,11 +461324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -447847,14 +461339,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -447865,11 +461357,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -447880,10 +461372,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -447894,13 +461386,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -447911,11 +461403,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -447926,11 +461418,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -447941,10 +461433,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -447955,13 +461447,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -447972,11 +461464,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -447987,11 +461479,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -448002,10 +461494,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -448016,13 +461508,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -448033,11 +461525,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -448048,11 +461540,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -448063,10 +461555,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -448077,13 +461569,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -448094,11 +461586,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -448109,11 +461601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -448124,10 +461616,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -448138,13 +461630,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -448155,11 +461647,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -448170,11 +461662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -448185,10 +461677,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -448199,13 +461691,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -448216,11 +461708,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -448231,7 +461723,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -448242,7 +461734,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -448253,11 +461745,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -448268,10 +461760,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -448282,13 +461774,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -448299,11 +461791,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -448314,14 +461806,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -448332,11 +461824,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -448347,11 +461839,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -448362,14 +461854,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -448380,13 +461872,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -448397,13 +461889,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -448414,13 +461906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -448431,11 +461923,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -448446,14 +461938,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -448464,11 +461956,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -448479,14 +461971,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -448497,11 +461989,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -448512,11 +462004,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -448527,10 +462019,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -448541,7 +462033,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -448549,7 +462041,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -448560,14 +462052,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -448578,11 +462070,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -448593,10 +462085,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -448607,7 +462099,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -448616,7 +462108,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -448627,7 +462119,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -448638,7 +462130,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -448649,7 +462141,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -448663,7 +462155,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -448674,7 +462166,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -448686,7 +462178,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -448697,7 +462189,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -448710,7 +462202,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -448721,7 +462213,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -448732,7 +462224,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -448743,7 +462235,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -448756,7 +462248,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -448767,7 +462259,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -448778,7 +462270,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -448789,7 +462281,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -448801,7 +462293,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -448812,7 +462304,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -448822,7 +462314,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -448833,11 +462325,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -448848,11 +462340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -448863,10 +462355,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -448877,7 +462369,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -448886,36 +462413,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -448925,36 +462452,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -448965,18 +462492,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -448986,18 +462513,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -449008,18 +462535,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -449029,143 +462556,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -449175,18 +462702,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -449195,412 +462722,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -449612,18 +463139,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -449632,262 +463159,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -449896,18 +463423,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -449915,388 +463442,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -450309,249 +463836,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
-        let __sym0 = __pop_Variant41(__symbols);
+        // __Module = Module => ActionFn(36);
+        let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -450564,59 +464106,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub use self::__parse__Module::ModuleParser;
+pub(crate) use self::__parse__LetStmt::LetStmtParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__ModuleStatement {
+mod __parse__Module {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -450698,535 +464240,545 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 107, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 108, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 112, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 113, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 112, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 113, 0, 0, 8, 9, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 112, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 113, 0, 0, 8, 0, 0, 0, 0, 0, 116, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 107, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 108, 0, 0, 5, 19, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 112, 7, 0, 0, 0, 0, 0, 0, 0, 2, 0, 113, 0, 0, 8, 0, 0, 0, 0, 0, 123, 0,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 107, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 108, 0, 0, 5, 19, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 107, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 108, 0, 0, 5, 0, 0, 0, 0, 0, 138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
         // State 19
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 25
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 107, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 108, 0, 0, 5, 0, 0, 0, 0, 0, 165, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 28
-        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, 181, -121, -121, 182, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 183, 184, 0, 185, 186, 187, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 188, -121, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, 0, 189, -111, 0, 0, -111, 190, -111, -111, -111, 0, 0, -111, 191, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 34
-        0, -164, -164, -164, -164, 50, -164, -164, -164, -164, -164, 0, 51, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 52, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, 190, -121, -121, 191, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 192, 193, 0, 194, 195, 196, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 197, -121, 0,
         // State 35
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 198, -111, 0, 0, -111, 199, -111, -111, -111, 0, 0, -111, 200, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 36
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 53, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, -166, -166, -166, -166, 51, -166, -166, -166, -166, -166, 0, 52, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 53, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 37
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 38
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 54, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 40
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 41
-        0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 110, 61, 0, 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 42
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 43
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 105, 62, 0, 0, 63, 0, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 0, 0,
         // State 44
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 45
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 46
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 47
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 48
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 51, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 52, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 49
-        156, 0, 0, 37, 0, 38, -82, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 52, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 53, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 50
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, -82, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 51
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 52
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 53
-        0, 0, 0, 175, 0, 0, 219, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 54
-        0, -164, -164, -164, -164, 50, -164, -164, -164, -164, -164, 0, 51, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 52, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, -164, -164, -164, 0,
+        0, 0, 0, 184, 0, 0, 226, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 55
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 51, -166, -166, -166, -166, -166, 0, 52, 0, -166, 0, 227, -166, -166, -166, 0, -166, -166, -166, 53, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 56
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 57
-        0, 0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 58
-        0, 0, 0, 0, 0, 0, 0, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 110, 61, 0, 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 228, 0,
+        0, 0, 0, 0, 0, 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 59
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 105, 62, 0, 0, 63, 0, 0, 0, 0, 64, 0, 0, 0, 65, 0, 0, 0, 236, 0,
         // State 60
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 61
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 62
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 63
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 64
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 65
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 66
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 67
-        0, 0, 189, -110, 0, 0, -110, 190, -110, -110, -110, 0, 0, -110, 191, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, 0, 198, -110, 0, 0, -110, 199, -110, -110, -110, 0, 0, -110, 200, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
         // State 68
-        0, 181, -120, -120, 182, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 183, 184, 0, 185, 186, 187, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 188, -120, 0,
+        0, 190, -120, -120, 191, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 192, 193, 0, 194, 195, 196, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 197, -120, 0,
         // State 69
-        156, 0, 0, 37, 0, 38, -84, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, -84, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 70
-        0, 0, 0, 175, 0, 0, -81, 0, 176, 238, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, -81, 0, 185, 243, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 71
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 244, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 75
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 76
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 189, 0, 0, 0,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 79
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 189, 0, 0, 0,
         // State 80
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 82
-        0, 0, 0, 175, 0, 0, -83, 0, 176, 251, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, -83, 0, 185, 254, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 85
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 86
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 87
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 88
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 90
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 91
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 189, 0, 0, 0,
         // State 93
-        0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0,
         // State 94
-        0, 0, 0, 175, 0, 0, 0, 0, 176, -190, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, -190, 0,
+        0, 0, 0, 131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, -192, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, -192, 0,
         // State 96
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 97
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 180, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 98
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 189, 0, 0, 0,
         // State 99
-        156, 0, 0, 37, 0, 38, 0, 39, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 110, 0, 0, 159, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 161,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 100
-        0, 0, 0, 175, 0, 0, 0, 0, 176, 0, 177, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0,
+        167, 0, 0, 39, 0, 40, 0, 41, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 105, 0, 0, 170, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 172,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, -160, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, 0, 0, -160, 0, 0, 0, 0, 0, -160, 0,
+        0, 0, 0, 184, 0, 0, 0, 0, 185, 0, 186, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, -159, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, 0, 0, -159, 0, 0, 0, 0, 0, -159, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, -162, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, 0, 0, -162, 0, 0, 0, 0, 0, -162, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 105
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, -161, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, 0, 0, -161, 0, 0, 0, 0, 0, -161, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, -162, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, 0, 0, -162, 0, 0, 0, 0, 0, -162, 0,
         // State 106
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, -161, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, 0, 0, -161, 0, 0, 0, 0, 0, -161, 0,
         // State 107
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, -151, -151, 0, 0, 0, 0, 0, 0, 0, -151, 0, -151, 0, 0, -151, -151, 0, 0, 0, 0, 0, 0,
         // State 108
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, 0, -164, -164, 0, 0, 0, 0, 0, 0, 0, -164, 0, -164, 0, 0, -164, 0, 0, 0, 0, 0, -164, 0,
         // State 109
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, -155, -155, 0, 0, 0, 0, 0, 0, 0, -155, 0, -155, 0, 0, -155, 0, 0, 0, 0, 0, -155, 0,
         // State 110
-        0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, 0, -163, -163, 0, 0, 0, 0, 0, 0, 0, -163, 0, -163, 0, 0, -163, 0, 0, 0, 0, 0, -163, 0,
         // State 111
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
-        // State 112
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 112
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 113
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, -152, -152, 0, 0, 0, 0, 0, 0, 0, -152, 0, -152, 0, 0, -152, -152, 0, 0, 0, 0, 0, 0,
         // State 114
-        0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, -156, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, 0, 0, -156, 0, 0, 0, 0, 0, -156, 0,
         // State 115
-        0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, -160, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, 0, 0, -160, 0, 0, 0, 0, 0, -160, 0,
         // State 116
-        0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, -200, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 117
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 118
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 119
-        0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
         // State 120
-        0, 0, 0, 0, 0, 0, -85, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
         // State 121
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
         // State 122
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, -149, -149, 0, 0, 0, 0, 0, 0, 0, -149, 0, -149, 0, 0, -149, -149, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, -159, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, 0, 0, -159, 0, 0, 0, 0, 0, -159, 0,
         // State 123
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 0, -153, -153, 0, 0, 0, 0, 0, 0, 0, -153, 0, -153, 0, 0, -153, 0, 0, 0, 0, 0, -153, 0,
+        0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 124
-        0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 125
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 141, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0,
         // State 126
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, -146, -146, 0, 0, 0, 0, 0, 0, 0, -146, 0, -146, 0, 0, -146, -146, 0, 0, 0, 0, 0, 0,
         // State 127
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
         // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0,
         // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 130
-        0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, -199, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 132
-        0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -85, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 133
-        0, 0, 0, 0, 0, 0, -87, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 134
-        0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 135
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, -150, -150, 0, 0, 0, 0, 0, 0, 0, -150, 0, -150, 0, 0, -150, -150, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 136
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, -154, -154, 0, 0, 0, 0, 0, 0, 0, -154, 0, -154, 0, 0, -154, 0, 0, 0, 0, 0, -154, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 137
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, 0, -158, -158, 0, 0, 0, 0, 0, 0, 0, -158, 0, -158, 0, 0, -158, 0, 0, 0, 0, 0, -158, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0,
         // State 138
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
         // State 140
-        0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0,
         // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0,
         // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
         // State 143
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
         // State 144
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, 0, -185, -185, 0, 0, 0, 0, 0, 0, 0, -185, 0, -185, 0, 0, -185, 0, 0, 0, 0, 0, -185, 0,
+        0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 146
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
+        0, 0, 0, 0, 0, 0, -87, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 147
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 148
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 149
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 150
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0,
         // State 151
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 152
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
         // State 153
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, 0, 0, -187, 0, 0, 0, 0, 0, -187, 0,
         // State 154
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
         // State 155
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
         // State 156
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 157
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
         // State 158
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 159
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
         // State 160
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
         // State 161
-        0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
         // State 162
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, -137, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, 0, 0, -137, 0, 0, 0, 0, 0, -137, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
         // State 163
-        0, 0, 0, 0, 0, 0, -125, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
         // State 164
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, -157, 0, 0, 0, 0, 0, 0, 0, -157, 0, -157, 0, 0, -157, 0, 0, 0, 0, 0, -157, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
         // State 165
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
         // State 166
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -144, 0, -144, -144, 0, 0, 0, 0, 0, 0, 0, -144, 0, -144, 0, 0, -144, -144, 0, 0, 0, 0, 0, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 167
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 168
-        0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
         // State 169
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
         // State 170
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
         // State 171
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 172
-        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0,
+        0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 173
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, -137, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, 0, 0, -137, 0, 0, 0, 0, 0, -137, 0,
         // State 174
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, -125, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 175
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 176
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 177
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, -105, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, 0, 0, -105, 0, 0, 0, 0, 0, -105, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
         // State 178
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0,
         // State 179
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
         // State 180
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, -145, -145, 0, 0, 0, 0, 0, 0, 0, -145, 0, -145, 0, 0, -145, -145, 0, 0, 0, 0, 0, 0,
         // State 181
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, 0, 0, 0, -204, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, -204, 0,
         // State 182
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 183
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 184
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 185
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 186
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, -105, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, 0, 0, -105, 0, 0, 0, 0, 0, -105, 0,
         // State 187
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 188
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 189
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 190
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 191
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 192
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 193
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 194
-        0, 0, 0, 0, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 195
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 196
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, -133, 0, 0, 0, 0, 0, -133, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 197
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 198
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 199
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 200
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
         // State 201
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
         // State 202
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
         // State 203
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0,
         // State 204
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
+        0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 205
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
         // State 206
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, -133, 0, 0, 0, 0, 0, -133, 0,
         // State 207
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 208
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 209
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
         // State 210
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, -135, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, 0, 0, -135, 0, 0, 0, 0, 0, -135, 0,
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
         // State 211
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 234, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 212
-        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 213
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 214
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
         // State 215
-        0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
         // State 216
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 217
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, -135, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, 0, 0, -135, 0, 0, 0, 0, 0, -135, 0,
         // State 218
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 0,
         // State 219
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0,
         // State 220
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, -136, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, 0, 0, -136, 0, 0, 0, 0, 0, -136, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
         // State 221
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
         // State 222
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 223
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
         // State 224
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
         // State 225
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
         // State 226
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 227
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, -80, -80, -80, -80, -80, 0, 0, -80, 0, -80, 0, -80, -80, 0, -80, 0, -80, 0, 0, 0, -80, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
         // State 228
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, -136, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, 0, 0, -136, 0, 0, 0, 0, 0, -136, 0,
         // State 229
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 230
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 231
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
         // State 232
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
         // State 233
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
         // State 234
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, -131, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, 0, 0, -131, 0, 0, 0, 0, 0, -131, 0,
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
         // State 235
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, -184, 0, 0, 0, 0, 0, 0, 0, -184, 0, -184, 0, 0, -184, 0, 0, 0, 0, 0, -184, 0,
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, -80, -80, -80, -80, -80, 0, 0, -80, 0, -80, 0, -80, -80, 0, -80, 0, -80, 0, 0, 0, -80, 0,
         // State 236
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
         // State 237
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 238
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 239
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 253, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, -131, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, 0, 0, -131, 0, 0, 0, 0, 0, -131, 0,
         // State 240
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, 0, 0, -186, 0, 0, 0, 0, 0, -186, 0,
         // State 241
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
         // State 242
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, -132, 0, 0, 0, 0, 0, -132, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 243
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
         // State 244
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0,
         // State 245
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 246
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 247
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, -132, 0, 0, 0, 0, 0, -132, 0,
         // State 248
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, 0, -143, -143, 0, 0, 0, 0, 0, 0, 0, -143, 0, -143, 0, 0, -143, -143, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 249
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, -134, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, 0, 0, -134, 0, 0, 0, 0, 0, -134, 0,
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
         // State 250
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 251
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
         // State 252
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, -134, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, 0, 0, -134, 0, 0, 0, 0, 0, -134, 0,
         // State 253
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 254
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 255
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 256
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, -130, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, 0, 0, -130, 0, 0, 0, 0, 0, -130, 0,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 257
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 258
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 259
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 260
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, -130, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, 0, 0, -130, 0, 0, 0, 0, 0, -130, 0,
         // State 261
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 262
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 263
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 264
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        // State 265
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
+        // State 266
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 267
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 268
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 269
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -451435,15 +464987,15 @@
         // State 100
         0,
         // State 101
-        -160,
+        0,
         // State 102
-        -159,
+        -235,
         // State 103
-        -162,
+        0,
         // State 104
-        -233,
+        0,
         // State 105
-        -161,
+        0,
         // State 106
         0,
         // State 107
@@ -451463,7 +465015,7 @@
         // State 114
         0,
         // State 115
-        0,
+        -160,
         // State 116
         0,
         // State 117
@@ -451477,7 +465029,7 @@
         // State 121
         0,
         // State 122
-        0,
+        -159,
         // State 123
         0,
         // State 124
@@ -451507,7 +465059,7 @@
         // State 136
         0,
         // State 137
-        -158,
+        0,
         // State 138
         0,
         // State 139
@@ -451523,7 +465075,7 @@
         // State 144
         0,
         // State 145
-        -185,
+        0,
         // State 146
         0,
         // State 147
@@ -451557,11 +465109,11 @@
         // State 161
         0,
         // State 162
-        -137,
+        0,
         // State 163
         0,
         // State 164
-        -157,
+        0,
         // State 165
         0,
         // State 166
@@ -451587,7 +465139,7 @@
         // State 176
         0,
         // State 177
-        -105,
+        0,
         // State 178
         0,
         // State 179
@@ -451625,7 +465177,7 @@
         // State 195
         0,
         // State 196
-        -133,
+        0,
         // State 197
         0,
         // State 198
@@ -451653,7 +465205,7 @@
         // State 209
         0,
         // State 210
-        -135,
+        0,
         // State 211
         0,
         // State 212
@@ -451673,7 +465225,7 @@
         // State 219
         0,
         // State 220
-        -136,
+        0,
         // State 221
         0,
         // State 222
@@ -451687,7 +465239,7 @@
         // State 226
         0,
         // State 227
-        -80,
+        0,
         // State 228
         0,
         // State 229
@@ -451701,9 +465253,9 @@
         // State 233
         0,
         // State 234
-        -131,
+        0,
         // State 235
-        -184,
+        0,
         // State 236
         0,
         // State 237
@@ -451717,7 +465269,7 @@
         // State 241
         0,
         // State 242
-        -132,
+        0,
         // State 243
         0,
         // State 244
@@ -451731,7 +465283,7 @@
         // State 248
         0,
         // State 249
-        -134,
+        0,
         // State 250
         0,
         // State 251
@@ -451745,7 +465297,7 @@
         // State 255
         0,
         // State 256
-        -130,
+        0,
         // State 257
         0,
         // State 258
@@ -451762,194 +465314,208 @@
         0,
         // State 264
         0,
+        // State 265
+        0,
+        // State 266
+        0,
+        // State 267
+        0,
+        // State 268
+        0,
+        // State 269
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 57,
+            1 => 58,
             15 => 69,
-            18 => 15,
-            21 => 64,
-            24 => 27,
-            27 => 21,
-            30 => 83,
-            33 => 20,
-            36 => 197,
-            37 => 46,
-            38 => 47,
-            39 => 45,
+            18 => 21,
+            21 => 25,
+            24 => 12,
+            27 => 24,
+            30 => 84,
+            33 => 23,
+            36 => 207,
+            37 => 47,
+            38 => 48,
+            39 => 46,
             40 => match state {
-                39 => 196,
-                43 => 210,
-                56 => 220,
-                65 => 234,
-                73 => 242,
-                76 => 244,
-                79 => 246,
-                81 => 249,
-                88 => 256,
-                91 => 259,
-                92 => 260,
-                97 => 263,
-                _ => 162,
+                41 => 206,
+                44 => 217,
+                57 => 228,
+                65 => 239,
+                73 => 247,
+                76 => 249,
+                79 => 251,
+                81 => 252,
+                89 => 260,
+                92 => 264,
+                93 => 265,
+                98 => 268,
+                _ => 173,
             },
-            41 => 215,
+            41 => 222,
             42 => match state {
-                14 => 132,
-                19 => 140,
-                28 => 168,
-                _ => 119,
+                20 => 145,
+                22 => 148,
+                30 => 175,
+                _ => 131,
             },
-            43 => 208,
+            43 => 141,
             44 => match state {
-                44 => 211,
-                _ => 127,
+                45 => 218,
+                _ => 137,
             },
-            45 => 239,
+            45 => 244,
             46 => match state {
-                22 => 147,
-                30 => 173,
-                _ => 125,
+                26 => 158,
+                32 => 182,
+                83 => 254,
+                _ => 135,
             },
-            47 => 101,
-            48 => 138,
+            47 => 105,
+            48 => 120,
             49 => match state {
-                37 => 53,
-                49 => 70,
-                51 => 71,
-                60 => 76,
-                62 => 78,
-                63 => 79,
+                39 => 54,
+                50 => 70,
+                52 => 71,
+                61 => 76,
+                63 => 78,
+                64 => 79,
                 69 => 82,
-                75 => 85,
-                84 => 90,
-                86 => 91,
-                89 => 94,
-                95 => 97,
+                75 => 86,
+                85 => 91,
+                87 => 92,
+                90 => 95,
                 96 => 98,
-                99 => 100,
-                _ => 31,
+                97 => 99,
+                100 => 101,
+                _ => 33,
             },
-            50 => 148,
+            50 => 159,
             51 => match state {
-                35 => 192,
-                36 => 193,
-                38 => 195,
-                46 => 213,
-                52 => 217,
-                _ => 149,
+                37 => 201,
+                38 => 202,
+                40 => 205,
+                47 => 220,
+                53 => 224,
+                _ => 160,
             },
             52 => match state {
-                47 => 68,
-                _ => 32,
+                48 => 68,
+                _ => 34,
             },
             53 => match state {
-                45 => 67,
-                _ => 33,
+                46 => 67,
+                _ => 35,
             },
             55 => match state {
-                41 | 58 => 198,
-                _ => 150,
+                43 | 59 => 208,
+                _ => 161,
             },
             56 => match state {
-                15 => 133,
-                _ => 120,
+                21 => 146,
+                _ => 132,
             },
-            58 => 199,
-            59 => 102,
+            58 => 209,
+            59 => 106,
             60 => match state {
-                37 | 75 | 84 | 89 | 96 | 99 => 54,
-                57 => 74,
-                1 => 108,
-                2 => 110,
-                3 => 111,
-                4 => 113,
-                5 => 114,
-                6 => 115,
-                7 | 11 | 20 | 22 | 25 | 29..=30 | 40 | 55 | 66 | 80 | 87 | 93 => 116,
-                8 | 14..=15 | 19 | 28 => 121,
-                10 => 124,
-                12 | 21 | 44 => 128,
-                13 => 130,
-                18 => 139,
-                27 => 165,
-                42 => 209,
-                50 => 216,
-                59 => 229,
-                61 => 230,
-                64 => 231,
-                72 | 83 => 240,
-                77 => 245,
-                _ => 34,
+                39 | 75 | 85 | 90 | 97 | 100 => 55,
+                58 => 74,
+                1 => 103,
+                5 => 116,
+                6 => 117,
+                7 => 119,
+                8 => 121,
+                10 => 123,
+                11 => 124,
+                12 => 125,
+                13 | 16 | 23 | 26 | 29 | 31..=32 | 42 | 56 | 66 | 80 | 83 | 88 | 94 => 128,
+                14 | 20..=22 | 30 => 133,
+                15 => 134,
+                17 | 24 | 45 => 138,
+                18 => 142,
+                19 => 143,
+                25 => 155,
+                51 => 223,
+                60 => 237,
+                62 => 238,
+                72 | 84 => 245,
+                77 => 250,
+                _ => 36,
             },
-            62 => 200,
-            63 => match state {
-                16 => 135,
-                _ => 122,
+            62 => 203,
+            63 => 210,
+            64 => match state {
+                3 => 113,
+                _ => 107,
             },
-            64 => 201,
-            65 => 16,
-            67 => match state {
-                16 => 26,
-                _ => 17,
+            65 => 211,
+            66 => 3,
+            68 => match state {
+                3 => 9,
+                _ => 4,
             },
-            68 => 58,
-            69 => 103,
+            69 => 59,
             70 => match state {
-                0 => 104,
-                17 | 26 => 136,
-                _ => 123,
+                0 => 102,
+                _ => 108,
             },
             71 => match state {
-                41 | 58 => 202,
-                57 => 221,
-                _ => 151,
+                2..=3 => 109,
+                _ => 114,
             },
             72 => match state {
-                48 => 214,
-                _ => 191,
+                43 | 59 => 212,
+                58 => 229,
+                _ => 162,
             },
-            73 => 48,
-            75 => 13,
-            77 => 203,
-            78 => match state {
-                58 => 226,
-                _ => 204,
+            73 => match state {
+                49 => 221,
+                _ => 200,
             },
-            79 => 105,
-            80 => match state {
-                21 => 144,
-                _ => 129,
+            74 => 49,
+            76 => 19,
+            78 => 213,
+            79 => match state {
+                59 => 234,
+                _ => 214,
             },
-            82 => match state {
-                75 => 243,
-                84 => 254,
-                89 => 258,
-                96 => 262,
-                99 => 264,
-                _ => 194,
+            80 => 110,
+            81 => match state {
+                24 => 152,
+                _ => 139,
             },
             83 => match state {
-                83 => 251,
-                _ => 241,
+                75 => 248,
+                85 => 258,
+                90 => 263,
+                97 => 267,
+                100 => 269,
+                _ => 204,
             },
-            85 => 152,
-            86 => 153,
-            87 => match state {
-                40 => 56,
-                55 => 73,
+            84 => match state {
+                84 => 255,
+                _ => 246,
+            },
+            86 => 163,
+            87 => 164,
+            88 => match state {
+                42 => 57,
+                56 => 73,
                 66 => 81,
-                80 => 88,
-                7 => 117,
-                20 => 141,
-                25 => 163,
-                29 => 171,
-                87 => 255,
-                93 => 261,
-                _ => 126,
+                80 => 89,
+                13 => 129,
+                23 => 149,
+                29 => 174,
+                31 => 178,
+                88 => 259,
+                94 => 266,
+                _ => 136,
             },
-            89 => 35,
-            90 => 154,
-            91 => 205,
+            90 => 37,
+            91 => 165,
+            92 => 215,
             _ => 0,
         }
     }
@@ -452044,7 +465610,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::ModuleStatement;
+        type Success = ast::Module;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -453065,19 +466631,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -453089,37 +466655,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -453131,7 +466697,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -453143,7 +466709,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -453161,43 +466727,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -453215,19 +466781,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -453239,7 +466805,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -453251,7 +466817,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -453263,25 +466829,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -453294,108 +466860,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -453407,43 +466973,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -453455,14 +467021,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -453480,260 +467046,278 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => __state_machine::SimulatedReduce::Accept,
             233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 113,
+                    nonterminal_produced: 112,
                 }
             }
-            234 => {
+            234 => __state_machine::SimulatedReduce::Accept,
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct ModuleStatementParser {
+    pub struct ModuleParser {
         _priv: (),
     }
 
-    impl ModuleStatementParser {
-        pub(crate) fn new() -> ModuleStatementParser {
-            ModuleStatementParser {
+    impl ModuleParser {
+        pub fn new() -> ModuleParser {
+            ModuleParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub(crate) fn parse<
+        pub fn parse<
             __TOKEN: __ToTriple<>,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::ModuleStatement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Module, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -453784,7 +467368,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::ModuleStatement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Module,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -454484,18 +468068,18 @@
                 __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             232 => {
-                // __ModuleStatement = ModuleStatement => ActionFn(36);
-                let __sym0 = __pop_Variant47(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action36::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             233 => {
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             234 => {
-                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Module = Module => ActionFn(36);
+                let __sym0 = __pop_Variant46(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action36::<>(__sym0);
+                return Some(Ok(__nt));
             }
             235 => {
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -454539,6 +468123,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -455189,10 +468782,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -455203,11 +468796,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -455218,11 +468811,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -455233,13 +468826,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -455250,11 +468843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -455265,10 +468858,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -455279,11 +468872,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -455294,10 +468887,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -455308,11 +468901,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -455323,10 +468916,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -455337,13 +468930,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -455354,13 +468947,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -455371,10 +468964,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -455385,14 +468978,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -455403,14 +468996,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -455421,10 +469014,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -455435,13 +469028,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -455452,13 +469045,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -455469,10 +469062,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -455483,14 +469076,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -455501,14 +469094,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -455519,10 +469112,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -455533,13 +469126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -455550,10 +469143,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -455564,11 +469157,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -455579,13 +469172,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -455596,14 +469189,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -455614,13 +469207,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -455631,10 +469224,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -455645,11 +469238,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -455660,13 +469253,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -455677,14 +469270,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -455695,13 +469288,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -455712,10 +469305,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -455726,11 +469319,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -455741,13 +469334,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -455758,14 +469351,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -455776,13 +469369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -455793,10 +469386,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -455807,11 +469400,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -455822,13 +469415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -455839,14 +469432,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -455857,13 +469450,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -455874,10 +469467,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -455888,11 +469481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -455903,13 +469496,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -455920,14 +469513,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -455938,13 +469531,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -455955,10 +469548,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -455969,11 +469562,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -455984,13 +469577,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -456001,14 +469594,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -456019,13 +469612,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -456036,10 +469629,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -456050,11 +469643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -456065,13 +469658,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -456082,14 +469675,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -456100,10 +469693,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -456114,10 +469707,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -456128,14 +469721,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -456146,7 +469739,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -456154,7 +469747,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -456165,14 +469758,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -456183,7 +469776,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -456191,7 +469784,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -456202,11 +469795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456217,11 +469810,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456232,11 +469825,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456247,11 +469840,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456262,11 +469855,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456277,11 +469870,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456292,11 +469885,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456307,11 +469900,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -456322,11 +469915,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -456337,11 +469930,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -456352,11 +469945,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -456367,11 +469960,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -456382,11 +469975,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -456397,11 +469990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -456412,11 +470005,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -456427,11 +470020,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -456442,14 +470035,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -456460,11 +470053,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -456475,10 +470068,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -456489,13 +470082,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -456506,11 +470099,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -456521,11 +470114,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -456536,10 +470129,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -456550,13 +470143,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -456567,11 +470160,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -456582,11 +470175,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -456597,10 +470190,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -456611,13 +470204,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -456628,11 +470221,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -456643,11 +470236,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -456658,10 +470251,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -456672,13 +470265,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -456689,11 +470282,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -456704,11 +470297,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -456719,10 +470312,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -456733,13 +470326,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -456750,11 +470343,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -456765,11 +470358,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -456780,10 +470373,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -456794,13 +470387,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -456811,11 +470404,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -456826,7 +470419,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -456837,7 +470430,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -456848,11 +470441,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -456863,10 +470456,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -456877,13 +470470,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -456894,11 +470487,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -456909,14 +470502,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -456927,11 +470520,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -456942,11 +470535,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -456957,14 +470550,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -456975,13 +470568,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -456992,13 +470585,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -457009,13 +470602,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -457026,11 +470619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -457041,14 +470634,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -457059,11 +470652,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -457074,14 +470667,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -457092,11 +470685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -457107,11 +470700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -457122,10 +470715,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -457136,7 +470729,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -457144,7 +470737,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -457155,14 +470748,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -457173,11 +470766,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -457188,10 +470781,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -457202,7 +470795,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -457211,7 +470804,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -457222,7 +470815,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -457233,7 +470826,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -457244,7 +470837,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -457258,7 +470851,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -457269,7 +470862,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -457281,7 +470874,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -457292,7 +470885,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -457305,7 +470898,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -457316,7 +470909,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -457327,7 +470920,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -457338,7 +470931,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -457351,7 +470944,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -457362,7 +470955,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -457373,7 +470966,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -457384,7 +470977,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -457396,7 +470989,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -457407,7 +471000,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -457417,7 +471010,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -457428,11 +471021,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -457443,11 +471036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -457458,10 +471051,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -457472,7 +471065,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -457481,36 +471109,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -457520,36 +471148,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -457560,18 +471188,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -457581,18 +471209,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -457603,18 +471231,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -457624,143 +471252,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -457770,18 +471398,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -457790,412 +471418,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -458207,18 +471835,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -458227,262 +471855,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -458491,18 +472119,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -458510,388 +472138,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -458904,249 +472532,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
-        let __sym0 = __pop_Variant46(__symbols);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
+        let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -459159,59 +472802,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__ModuleStatement::ModuleStatementParser;
+pub use self::__parse__Module::ModuleParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__PathExpr {
+mod __parse__ModuleStatement {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -459293,173 +472936,545 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 108, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 109, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 4, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 5, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 48, 0, 0, 0, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 54, -121, -121, 55, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 56, 57, 0, 58, 59, 60, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 61, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, 0, 62, -111, 0, 0, -111, 63, -111, -111, -111, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 4, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 5, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 108, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 109, 0, 0, 5, 19, 0, 0, 0, 0, 0, 0,
         // State 10
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 18, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 13
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        42, 0, 0, 11, 0, 12, -82, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 108, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 109, 0, 0, 5, 19, 0, 0, 0, 0, 0, 0,
         // State 17
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 108, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 109, 0, 0, 5, 0, 0, 0, 0, 0, 139, 0,
         // State 18
-        0, 0, 0, 48, 0, 0, 72, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107, 0, 0, 0, 0,
         // State 19
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 4, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 5, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, 0, 62, -110, 0, 0, -110, 63, -110, -110, -110, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 54, -120, -120, 55, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 56, 57, 0, 58, 59, 60, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 61, -120, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 22
-        42, 0, 0, 11, 0, 12, -84, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        0, 0, 0, 48, 0, 0, -81, 0, 49, 75, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 25
-        0, 0, 0, 48, 0, 0, -83, 0, 49, 79, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 108, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 109, 0, 0, 5, 0, 0, 0, 0, 0, 166, 0,
         // State 27
-        42, 0, 0, 11, 0, 12, 0, 13, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 31, 0, 0, 45, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 47,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -109, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 48, 0, 0, 0, 0, 49, -190, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, -86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
         // State 32
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, 182, -121, -121, 183, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 184, 185, 0, 186, 187, 188, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 189, -121, 0,
         // State 33
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 190, -111, 0, 0, -111, 191, -111, -111, -111, 0, 0, -111, 192, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 34
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -166, -166, -166, -166, 50, -166, -166, -166, -166, -166, 0, 51, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 52, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 35
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 36
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 53, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 37
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 38
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 39
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 40
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 41
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 111, 61, 0, 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 0,
         // State 42
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -90, 0,
         // State 43
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 44
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 45
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 46
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 47
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 48
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 51, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 52, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 49
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        157, 0, 0, 37, 0, 38, -82, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 50
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 51
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 52
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 53
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, 0, 0, 176, 0, 0, 221, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
         // State 54
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, -166, -166, -166, -166, 50, -166, -166, -166, -166, -166, 0, 51, 0, -166, 0, 222, -166, -166, -166, 0, -166, -166, -166, 52, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 55
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 56
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 57
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        0, 0, 0, 0, 0, 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 58
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 111, 61, 0, 0, 62, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 231, 0,
         // State 59
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 60
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 61
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 62
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 63
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 64
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -92, 0,
         // State 65
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 66
-        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 67
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 190, -110, 0, 0, -110, 191, -110, -110, -110, 0, 0, -110, 192, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
         // State 68
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, 182, -120, -120, 183, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 184, 185, 0, 186, 187, 188, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 189, -120, 0,
         // State 69
-        0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        157, 0, 0, 37, 0, 38, -84, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 70
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 176, 0, 0, -81, 0, 177, 241, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
         // State 71
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
         // State 72
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 73
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 74
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 181, 0, 0, 0,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 181, 0, 0, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 176, 0, 0, -83, 0, 177, 254, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 84
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 85
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
+        // State 86
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+        // State 87
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
+        // State 88
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        // State 90
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
+        // State 91
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+        // State 92
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 181, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, 176, 0, 0, 0, 0, 177, -192, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, -192, 0,
+        // State 96
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
+        // State 97
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
+        // State 98
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 181, 0, 0, 0,
+        // State 99
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+        // State 100
+        157, 0, 0, 37, 0, 38, 0, 39, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 111, 0, 0, 160, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 162,
+        // State 101
+        0, 0, 0, 176, 0, 0, 0, 0, 177, 0, 178, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, -162, 0, 0, 0, 0, 0, 0, 0, -162, 0, -162, 0, 0, -162, 0, 0, 0, 0, 0, -162, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, -161, 0, 0, 0, 0, 0, 0, 0, -161, 0, -161, 0, 0, -161, 0, 0, 0, 0, 0, -161, 0,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, 0, -164, -164, 0, 0, 0, 0, 0, 0, 0, -164, 0, -164, 0, 0, -164, 0, 0, 0, 0, 0, -164, 0,
+        // State 105
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 106
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, 0, -163, -163, 0, 0, 0, 0, 0, 0, 0, -163, 0, -163, 0, 0, -163, 0, 0, 0, 0, 0, -163, 0,
+        // State 107
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 108
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 109
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 110
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        // State 111
+        0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 112
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+        // State 113
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 114
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
+        // State 115
+        0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 116
+        0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 117
+        0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, -202, 0,
+        // State 118
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 119
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 120
+        0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 121
+        0, 0, 0, 0, 0, 0, -85, 0, 0, 136, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 122
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 123
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 0, -151, -151, 0, 0, 0, 0, 0, 0, 0, -151, 0, -151, 0, 0, -151, -151, 0, 0, 0, 0, 0, 0,
+        // State 124
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, 0, -155, -155, 0, 0, 0, 0, 0, 0, 0, -155, 0, -155, 0, 0, -155, 0, 0, 0, 0, 0, -155, 0,
+        // State 125
+        0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 126
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 127
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 128
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 0,
+        // State 129
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 130
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
+        // State 131
+        0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, -201, 0,
+        // State 132
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 133
+        0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 134
+        0, 0, 0, 0, 0, 0, -87, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 135
+        0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 136
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 0, -152, -152, 0, 0, 0, 0, 0, 0, 0, -152, 0, -152, 0, 0, -152, -152, 0, 0, 0, 0, 0, 0,
+        // State 137
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, -156, 0, 0, 0, 0, 0, 0, 0, -156, 0, -156, 0, 0, -156, 0, 0, 0, 0, 0, -156, 0,
+        // State 138
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, -160, 0, 0, 0, 0, 0, 0, 0, -160, 0, -160, 0, 0, -160, 0, 0, 0, 0, 0, -160, 0,
+        // State 139
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0,
+        // State 140
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 169, -106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -106, 0, 0, 0, 0,
+        // State 141
+        0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 142
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 143
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0,
+        // State 144
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 145
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        // State 146
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, -187, 0, 0, 0, 0, 0, 0, 0, -187, 0, -187, 0, 0, -187, 0, 0, 0, 0, 0, -187, 0,
+        // State 147
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
+        // State 148
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 149
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        // State 150
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        // State 151
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
+        // State 152
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
+        // State 153
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        // State 154
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        // State 155
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        // State 156
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
+        // State 157
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 158
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        // State 159
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        // State 160
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
+        // State 161
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
+        // State 162
+        0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, -137, 0, 0, 0, 0, 0, 0, 0, -137, 0, -137, 0, 0, -137, 0, 0, 0, 0, 0, -137, 0,
+        // State 164
+        0, 0, 0, 0, 0, 0, -125, 0, 0, -125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 165
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, -159, 0, 0, 0, 0, 0, 0, 0, -159, 0, -159, 0, 0, -159, 0, 0, 0, 0, 0, -159, 0,
+        // State 166
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 210, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -108, 0, 0, 0, 0,
+        // State 167
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -146, 0, -146, -146, 0, 0, 0, 0, 0, 0, 0, -146, 0, -146, 0, 0, -146, -146, 0, 0, 0, 0, 0, 0,
+        // State 168
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0,
+        // State 169
+        0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 170
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 171
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
+        // State 172
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0,
+        // State 173
+        0, 0, 0, 0, 0, 0, -204, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, -204, 0,
+        // State 174
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 175
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        // State 176
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        // State 177
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        // State 178
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, -105, 0, 0, 0, 0, 0, 0, 0, -105, 0, -105, 0, 0, -105, 0, 0, 0, 0, 0, -105, 0,
+        // State 179
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        // State 180
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        // State 181
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        // State 182
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 183
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 184
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        // State 185
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        // State 186
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 187
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 188
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 189
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 190
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 191
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 192
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
+        // State 193
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        // State 194
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        // State 195
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0,
+        // State 196
+        0, 0, 0, 0, 0, 0, 223, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 197
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        // State 198
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, -133, 0, 0, 0, 0, 0, 0, 0, -133, 0, -133, 0, 0, -133, 0, 0, 0, 0, 0, -133, 0,
+        // State 199
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 200
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 201
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        // State 202
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        // State 203
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 204
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 205
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 206
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
+        // State 207
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        // State 208
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 209
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0,
+        // State 210
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 236, 0,
+        // State 211
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -89, 0,
+        // State 212
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, -135, 0, 0, 0, 0, 0, 0, 0, -135, 0, -135, 0, 0, -135, 0, 0, 0, 0, 0, -135, 0,
+        // State 213
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
+        // State 214
+        0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, -203, 0,
+        // State 215
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        // State 216
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
+        // State 217
+        0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 218
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        // State 219
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        // State 220
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        // State 221
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 222
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
+        // State 223
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, -136, 0, 0, 0, 0, 0, 0, 0, -136, 0, -136, 0, 0, -136, 0, 0, 0, 0, 0, -136, 0,
+        // State 224
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 225
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 226
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        // State 227
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        // State 228
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        // State 229
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
+        // State 230
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, -80, -80, -80, -80, -80, 0, 0, -80, 0, -80, 0, -80, -80, 0, -80, 0, -80, 0, 0, 0, -80, 0,
+        // State 231
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        // State 232
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 233
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 234
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -91, 0,
+        // State 235
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 236
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0,
+        // State 237
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, -131, 0, 0, 0, 0, 0, 0, 0, -131, 0, -131, 0, 0, -131, 0, 0, 0, 0, 0, -131, 0,
+        // State 238
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, -186, 0, 0, 0, 0, 0, 0, 0, -186, 0, -186, 0, 0, -186, 0, 0, 0, 0, 0, -186, 0,
+        // State 239
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        // State 240
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 241
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        // State 242
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 257, 0,
+        // State 243
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 244
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 245
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, -132, 0, 0, 0, 0, 0, 0, 0, -132, 0, -132, 0, 0, -132, 0, 0, 0, 0, 0, -132, 0,
+        // State 246
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 247
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 248
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 249
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
+        // State 250
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0,
+        // State 251
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -145, 0, -145, -145, 0, 0, 0, 0, 0, 0, 0, -145, 0, -145, 0, 0, -145, -145, 0, 0, 0, 0, 0, 0,
+        // State 252
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, -134, 0, 0, 0, 0, 0, 0, 0, -134, 0, -134, 0, 0, -134, 0, 0, 0, 0, 0, -134, 0,
+        // State 253
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 254
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 255
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 256
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 257
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 258
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 259
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 260
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, -130, 0, 0, 0, 0, 0, 0, 0, -130, 0, -130, 0, 0, -130, 0, 0, 0, 0, 0, -130, 0,
+        // State 261
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 262
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 263
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 264
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        // State 265
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
+        // State 266
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 267
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 268
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 269
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -459468,9 +473483,9 @@
         // State 0
         0,
         // State 1
-        -164,
+        0,
         // State 2
-        -163,
+        0,
         // State 3
         0,
         // State 4
@@ -459524,15 +473539,15 @@
         // State 28
         0,
         // State 29
-        -234,
+        0,
         // State 30
-        -138,
+        0,
         // State 31
-        -167,
+        0,
         // State 32
-        -168,
+        0,
         // State 33
-        -165,
+        0,
         // State 34
         0,
         // State 35
@@ -459566,7 +473581,7 @@
         // State 49
         0,
         // State 50
-        -166,
+        0,
         // State 51
         0,
         // State 52
@@ -459633,69 +473648,568 @@
         0,
         // State 83
         0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        -162,
+        // State 103
+        -161,
+        // State 104
+        -164,
+        // State 105
+        -236,
+        // State 106
+        -163,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
+        // State 111
+        0,
+        // State 112
+        0,
+        // State 113
+        0,
+        // State 114
+        0,
+        // State 115
+        0,
+        // State 116
+        0,
+        // State 117
+        0,
+        // State 118
+        0,
+        // State 119
+        0,
+        // State 120
+        0,
+        // State 121
+        0,
+        // State 122
+        0,
+        // State 123
+        0,
+        // State 124
+        0,
+        // State 125
+        0,
+        // State 126
+        0,
+        // State 127
+        0,
+        // State 128
+        0,
+        // State 129
+        0,
+        // State 130
+        0,
+        // State 131
+        0,
+        // State 132
+        0,
+        // State 133
+        0,
+        // State 134
+        0,
+        // State 135
+        0,
+        // State 136
+        0,
+        // State 137
+        0,
+        // State 138
+        -160,
+        // State 139
+        0,
+        // State 140
+        0,
+        // State 141
+        0,
+        // State 142
+        0,
+        // State 143
+        0,
+        // State 144
+        0,
+        // State 145
+        0,
+        // State 146
+        -187,
+        // State 147
+        0,
+        // State 148
+        0,
+        // State 149
+        0,
+        // State 150
+        0,
+        // State 151
+        0,
+        // State 152
+        0,
+        // State 153
+        0,
+        // State 154
+        0,
+        // State 155
+        0,
+        // State 156
+        0,
+        // State 157
+        0,
+        // State 158
+        0,
+        // State 159
+        0,
+        // State 160
+        0,
+        // State 161
+        0,
+        // State 162
+        0,
+        // State 163
+        -137,
+        // State 164
+        0,
+        // State 165
+        -159,
+        // State 166
+        0,
+        // State 167
+        0,
+        // State 168
+        0,
+        // State 169
+        0,
+        // State 170
+        0,
+        // State 171
+        0,
+        // State 172
+        0,
+        // State 173
+        0,
+        // State 174
+        0,
+        // State 175
+        0,
+        // State 176
+        0,
+        // State 177
+        0,
+        // State 178
+        -105,
+        // State 179
+        0,
+        // State 180
+        0,
+        // State 181
+        0,
+        // State 182
+        0,
+        // State 183
+        0,
+        // State 184
+        0,
+        // State 185
+        0,
+        // State 186
+        0,
+        // State 187
+        0,
+        // State 188
+        0,
+        // State 189
+        0,
+        // State 190
+        0,
+        // State 191
+        0,
+        // State 192
+        0,
+        // State 193
+        0,
+        // State 194
+        0,
+        // State 195
+        0,
+        // State 196
+        0,
+        // State 197
+        0,
+        // State 198
+        -133,
+        // State 199
+        0,
+        // State 200
+        0,
+        // State 201
+        0,
+        // State 202
+        0,
+        // State 203
+        0,
+        // State 204
+        0,
+        // State 205
+        0,
+        // State 206
+        0,
+        // State 207
+        0,
+        // State 208
+        0,
+        // State 209
+        0,
+        // State 210
+        0,
+        // State 211
+        0,
+        // State 212
+        -135,
+        // State 213
+        0,
+        // State 214
+        0,
+        // State 215
+        0,
+        // State 216
+        0,
+        // State 217
+        0,
+        // State 218
+        0,
+        // State 219
+        0,
+        // State 220
+        0,
+        // State 221
+        0,
+        // State 222
+        0,
+        // State 223
+        -136,
+        // State 224
+        0,
+        // State 225
+        0,
+        // State 226
+        0,
+        // State 227
+        0,
+        // State 228
+        0,
+        // State 229
+        0,
+        // State 230
+        -80,
+        // State 231
+        0,
+        // State 232
+        0,
+        // State 233
+        0,
+        // State 234
+        0,
+        // State 235
+        0,
+        // State 236
+        0,
+        // State 237
+        -131,
+        // State 238
+        -186,
+        // State 239
+        0,
+        // State 240
+        0,
+        // State 241
+        0,
+        // State 242
+        0,
+        // State 243
+        0,
+        // State 244
+        0,
+        // State 245
+        -132,
+        // State 246
+        0,
+        // State 247
+        0,
+        // State 248
+        0,
+        // State 249
+        0,
+        // State 250
+        0,
+        // State 251
+        0,
+        // State 252
+        -134,
+        // State 253
+        0,
+        // State 254
+        0,
+        // State 255
+        0,
+        // State 256
+        0,
+        // State 257
+        0,
+        // State 258
+        0,
+        // State 259
+        0,
+        // State 260
+        -130,
+        // State 261
+        0,
+        // State 262
+        0,
+        // State 263
+        0,
+        // State 264
+        0,
+        // State 265
+        0,
+        // State 266
+        0,
+        // State 267
+        0,
+        // State 268
+        0,
+        // State 269
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 22,
-            30 => 26,
-            37 => 14,
-            38 => 15,
-            39 => 13,
-            41 => 69,
-            45 => 75,
+            1 => 57,
+            15 => 69,
+            18 => 15,
+            21 => 64,
+            24 => 27,
+            27 => 21,
+            30 => 84,
+            33 => 20,
+            36 => 199,
+            37 => 46,
+            38 => 47,
+            39 => 45,
+            40 => match state {
+                39 => 198,
+                43 => 212,
+                56 => 223,
+                65 => 237,
+                73 => 245,
+                76 => 247,
+                79 => 249,
+                81 => 252,
+                89 => 260,
+                92 => 264,
+                93 => 265,
+                98 => 268,
+                _ => 163,
+            },
+            41 => 217,
+            42 => match state {
+                14 => 133,
+                19 => 141,
+                28 => 169,
+                _ => 120,
+            },
+            43 => 210,
+            44 => match state {
+                44 => 213,
+                _ => 128,
+            },
+            45 => 242,
+            46 => match state {
+                22 => 148,
+                30 => 174,
+                83 => 254,
+                _ => 126,
+            },
+            47 => 102,
+            48 => 139,
             49 => match state {
-                11 => 18,
-                16 => 23,
-                22 => 25,
-                27 => 28,
-                _ => 5,
+                37 => 53,
+                49 => 70,
+                51 => 71,
+                60 => 76,
+                62 => 78,
+                63 => 79,
+                69 => 82,
+                75 => 86,
+                85 => 91,
+                87 => 92,
+                90 => 95,
+                96 => 98,
+                97 => 99,
+                100 => 101,
+                _ => 31,
             },
-            50 => 34,
+            50 => 149,
             51 => match state {
-                9 => 64,
-                10 => 65,
-                12 => 67,
-                14 => 68,
-                17 => 70,
-                _ => 35,
+                35 => 193,
+                36 => 194,
+                38 => 197,
+                46 => 215,
+                52 => 219,
+                _ => 150,
             },
             52 => match state {
-                15 => 21,
-                _ => 6,
+                47 => 68,
+                _ => 32,
             },
             53 => match state {
-                13 => 20,
-                _ => 7,
+                45 => 67,
+                _ => 33,
             },
-            55 => 36,
+            55 => match state {
+                41 | 58 => 200,
+                _ => 151,
+            },
+            56 => match state {
+                15 => 134,
+                _ => 121,
+            },
+            58 => 201,
+            59 => 103,
             60 => match state {
-                0 => 1,
-                11 | 27 => 19,
-                3 => 33,
-                24 | 26 => 76,
-                _ => 8,
+                37 | 75 | 85 | 90 | 97 | 100 => 54,
+                57 => 74,
+                1 => 109,
+                2 => 111,
+                3 => 112,
+                4 => 114,
+                5 => 115,
+                6 => 116,
+                7 | 11 | 20 | 22 | 25 | 29..=30 | 40 | 55 | 66 | 80 | 83 | 88 | 94 => 117,
+                8 | 14..=15 | 19 | 28 => 122,
+                10 => 125,
+                12 | 21 | 44 => 129,
+                13 => 131,
+                18 => 140,
+                27 => 166,
+                42 => 211,
+                50 => 218,
+                59 => 232,
+                61 => 233,
+                64 => 234,
+                72 | 84 => 243,
+                77 => 248,
+                _ => 34,
+            },
+            62 => 195,
+            63 => 202,
+            64 => match state {
+                16 => 136,
+                _ => 123,
+            },
+            65 => 203,
+            66 => 16,
+            68 => match state {
+                16 => 26,
+                _ => 17,
             },
+            69 => 58,
+            70 => 104,
             71 => match state {
-                0 => 29,
-                _ => 37,
+                0 => 105,
+                17 | 26 => 137,
+                _ => 124,
             },
             72 => match state {
-                2 => 32,
-                _ => 31,
+                41 | 58 => 204,
+                57 => 224,
+                _ => 152,
             },
-            73 => 2,
-            82 => match state {
-                27 => 83,
-                _ => 66,
+            73 => match state {
+                48 => 216,
+                _ => 192,
+            },
+            74 => 48,
+            76 => 13,
+            78 => 205,
+            79 => match state {
+                58 => 229,
+                _ => 206,
+            },
+            80 => 106,
+            81 => match state {
+                21 => 145,
+                _ => 130,
             },
             83 => match state {
-                26 => 79,
-                _ => 77,
+                75 => 246,
+                85 => 258,
+                90 => 263,
+                97 => 267,
+                100 => 269,
+                _ => 196,
             },
-            85 => 38,
-            86 => 39,
-            89 => 9,
-            90 => 40,
+            84 => match state {
+                84 => 255,
+                _ => 244,
+            },
+            86 => 153,
+            87 => 154,
+            88 => match state {
+                40 => 56,
+                55 => 73,
+                66 => 81,
+                80 => 89,
+                7 => 118,
+                20 => 142,
+                25 => 164,
+                29 => 172,
+                88 => 259,
+                94 => 266,
+                _ => 127,
+            },
+            90 => 35,
+            91 => 155,
+            92 => 207,
             _ => 0,
         }
     }
@@ -459790,7 +474304,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::PathExpr;
+        type Success = ast::ModuleStatement;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -460811,19 +475325,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -460835,37 +475349,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -460877,7 +475391,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -460889,7 +475403,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -460907,43 +475421,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -460961,19 +475475,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -460985,7 +475499,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -460997,7 +475511,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -461009,25 +475523,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -461040,108 +475554,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -461153,43 +475667,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -461201,14 +475715,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -461226,248 +475740,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => __state_machine::SimulatedReduce::Accept,
             234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 114,
+                    nonterminal_produced: 113,
                 }
             }
-            235 => {
+            235 => __state_machine::SimulatedReduce::Accept,
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct PathExprParser {
+    pub(crate) struct ModuleStatementParser {
         _priv: (),
     }
 
-    impl PathExprParser {
-        pub(crate) fn new() -> PathExprParser {
-            PathExprParser {
+    impl ModuleStatementParser {
+        pub(crate) fn new() -> ModuleStatementParser {
+            ModuleStatementParser {
                 _priv: (),
             }
         }
@@ -461479,7 +476011,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::PathExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::ModuleStatement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -461530,7 +476062,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::PathExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::ModuleStatement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -462233,18 +476765,18 @@
                 __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             233 => {
-                // __PathExpr = PathExpr => ActionFn(2);
-                let __sym0 = __pop_Variant48(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action2::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             234 => {
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             235 => {
-                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __ModuleStatement = ModuleStatement => ActionFn(37);
+                let __sym0 = __pop_Variant47(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action37::<>(__sym0);
+                return Some(Ok(__nt));
             }
             236 => {
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -462285,6 +476817,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -462935,10 +477476,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -462949,11 +477490,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -462964,11 +477505,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -462979,13 +477520,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -462996,11 +477537,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -463011,10 +477552,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -463025,11 +477566,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -463040,10 +477581,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -463054,11 +477595,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -463069,10 +477610,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -463083,13 +477624,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -463100,13 +477641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -463117,10 +477658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -463131,14 +477672,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -463149,14 +477690,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -463167,10 +477708,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -463181,13 +477722,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -463198,13 +477739,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -463215,10 +477756,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -463229,14 +477770,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -463247,14 +477788,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -463265,10 +477806,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -463279,13 +477820,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -463296,10 +477837,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -463310,11 +477851,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -463325,13 +477866,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -463342,14 +477883,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -463360,13 +477901,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -463377,10 +477918,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -463391,11 +477932,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -463406,13 +477947,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -463423,14 +477964,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -463441,13 +477982,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -463458,10 +477999,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -463472,11 +478013,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -463487,13 +478028,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -463504,14 +478045,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -463522,13 +478063,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -463539,10 +478080,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -463553,11 +478094,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -463568,13 +478109,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -463585,14 +478126,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -463603,13 +478144,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -463620,10 +478161,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -463634,11 +478175,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -463649,13 +478190,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -463666,14 +478207,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -463684,13 +478225,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -463701,10 +478242,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -463715,11 +478256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -463730,13 +478271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -463747,14 +478288,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -463765,13 +478306,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -463782,10 +478323,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -463796,11 +478337,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -463811,13 +478352,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -463828,14 +478369,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -463846,10 +478387,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -463860,10 +478401,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -463874,14 +478415,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -463892,7 +478433,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -463900,7 +478441,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -463911,14 +478452,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -463929,7 +478470,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -463937,7 +478478,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -463948,11 +478489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -463963,11 +478504,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -463978,11 +478519,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -463993,11 +478534,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -464008,11 +478549,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -464023,11 +478564,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -464038,11 +478579,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -464053,11 +478594,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -464068,11 +478609,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -464083,11 +478624,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -464098,11 +478639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -464113,11 +478654,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -464128,11 +478669,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -464143,11 +478684,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -464158,11 +478699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -464173,11 +478714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -464188,14 +478729,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -464206,11 +478747,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -464221,10 +478762,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -464235,13 +478776,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -464252,11 +478793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -464267,11 +478808,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -464282,10 +478823,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -464296,13 +478837,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -464313,11 +478854,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -464328,11 +478869,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -464343,10 +478884,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -464357,13 +478898,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -464374,11 +478915,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -464389,11 +478930,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -464404,10 +478945,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -464418,13 +478959,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -464435,11 +478976,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -464450,11 +478991,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -464465,10 +479006,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -464479,13 +479020,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -464496,11 +479037,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -464511,11 +479052,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -464526,10 +479067,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -464540,13 +479081,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -464557,11 +479098,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -464572,7 +479113,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -464583,7 +479124,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -464594,11 +479135,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -464609,10 +479150,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -464623,13 +479164,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -464640,11 +479181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -464655,14 +479196,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -464673,11 +479214,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -464688,11 +479229,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -464703,14 +479244,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -464721,13 +479262,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -464738,13 +479279,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -464755,13 +479296,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -464772,11 +479313,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -464787,14 +479328,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -464805,11 +479346,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -464820,14 +479361,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -464838,11 +479379,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -464853,11 +479394,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -464868,10 +479409,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -464882,7 +479423,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -464890,7 +479431,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -464901,14 +479442,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -464919,11 +479460,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -464934,10 +479475,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -464948,7 +479489,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -464957,7 +479498,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -464968,7 +479509,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -464979,7 +479520,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -464990,7 +479531,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -465004,7 +479545,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -465015,7 +479556,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -465027,7 +479568,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -465038,7 +479579,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -465051,7 +479592,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -465062,7 +479603,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -465073,7 +479614,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -465084,7 +479625,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -465097,7 +479638,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -465108,7 +479649,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -465119,7 +479660,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -465130,7 +479671,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -465142,7 +479683,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -465153,7 +479694,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -465163,7 +479704,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -465174,11 +479715,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -465189,11 +479730,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -465204,10 +479745,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -465218,7 +479759,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -465227,36 +479803,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -465266,36 +479842,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -465306,18 +479882,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -465327,18 +479903,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -465349,18 +479925,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -465370,143 +479946,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -465516,18 +480092,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -465536,412 +480112,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -465953,18 +480529,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -465973,262 +480549,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -466237,18 +480813,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -466256,388 +480832,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -466650,249 +481226,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
-        let __sym0 = __pop_Variant47(__symbols);
+        // __PathExpr = PathExpr => ActionFn(3);
+        let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        let __nt = super::__action3::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -466905,59 +481496,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__PathExpr::PathExprParser;
+pub(crate) use self::__parse__ModuleStatement::ModuleStatementParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__PathSegment {
+mod __parse__PathExpr {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -467039,171 +481630,215 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 4, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 5, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 3
-        0, 0, 0, 45, 0, 0, 0, 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 51, -121, -121, 52, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 58, -121, 0,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 5
-        0, 0, 59, -111, 0, 0, -111, 60, -111, -111, -111, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 0, 53, 0, 0, 0, 0, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 6
-        0, -164, -164, -164, -164, 16, -164, -164, -164, -164, -164, 0, 2, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 3, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, 59, -121, -121, 60, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 66, -121, 0,
         // State 7
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        0, 0, 67, -111, 0, 0, -111, 68, -111, -111, -111, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 8
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 17, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        0, -166, -166, -166, -166, 17, -166, -166, -166, -166, -166, 0, 4, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 5, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 9
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 10
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 18, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 11
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 12
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 13
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 14
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 2, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 3, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 15
-        39, 0, 0, 9, 0, 10, -82, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 16
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        47, 0, 0, 11, 0, 12, -82, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 17
-        0, 0, 0, 45, 0, 0, 71, 0, 46, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 18
-        0, -164, -164, -164, -164, 16, -164, -164, -164, -164, -164, 0, 2, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 3, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, -164, -164, -164, 0,
+        0, 0, 0, 53, 0, 0, 78, 0, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 19
-        0, 0, 59, -110, 0, 0, -110, 60, -110, -110, -110, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, -166, -166, -166, -166, 17, -166, -166, -166, -166, -166, 0, 4, 0, -166, 0, 79, 0, -166, -166, 0, -166, -166, -166, 5, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 20
-        0, 51, -120, -120, 52, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 58, -120, 0,
+        0, 0, 67, -110, 0, 0, -110, 68, -110, -110, -110, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 21
-        39, 0, 0, 9, 0, 10, -84, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        0, 59, -120, -120, 60, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 66, -120, 0,
         // State 22
-        0, 0, 0, 45, 0, 0, -81, 0, 46, 74, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        47, 0, 0, 11, 0, 12, -84, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 53, 0, 0, -81, 0, 54, 82, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 24
-        0, 0, 0, 45, 0, 0, -83, 0, 46, 78, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 53, 0, 0, -83, 0, 54, 86, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 26
-        39, 0, 0, 9, 0, 10, 0, 11, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 31, 0, 0, 42, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 44,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        0, 0, 0, 45, 0, 0, 0, 0, 46, -190, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        47, 0, 0, 11, 0, 12, 0, 13, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 36, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 31
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, 0, 0, 53, 0, 0, 0, 0, 54, -192, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -192, 0,
         // State 33
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 36
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 37
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 38
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 39
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 40
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 41
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 42
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 43
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 44
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 45
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 46
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 47
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 48
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 49
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 50
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 51
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 52
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 53
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 54
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 55
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 56
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 57
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 58
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 59
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 60
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 61
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 62
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 63
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 64
-        0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 65
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 66
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 67
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 68
-        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 69
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 70
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 71
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 72
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 84
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 85
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 100
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -467212,9 +481847,9 @@
         // State 0
         0,
         // State 1
-        0,
+        -166,
         // State 2
-        0,
+        -165,
         // State 3
         0,
         // State 4
@@ -467266,11 +481901,11 @@
         // State 27
         0,
         // State 28
-        -235,
+        0,
         // State 29
-        -165,
+        0,
         // State 30
-        -138,
+        0,
         // State 31
         0,
         // State 32
@@ -467278,15 +481913,15 @@
         // State 33
         0,
         // State 34
-        0,
+        -237,
         // State 35
-        0,
+        -138,
         // State 36
-        0,
+        -169,
         // State 37
-        0,
+        -170,
         // State 38
-        0,
+        -167,
         // State 39
         0,
         // State 40
@@ -467304,7 +481939,7 @@
         // State 46
         0,
         // State 47
-        -166,
+        0,
         // State 48
         0,
         // State 49
@@ -467320,7 +481955,7 @@
         // State 54
         0,
         // State 55
-        0,
+        -168,
         // State 56
         0,
         // State 57
@@ -467375,66 +482010,127 @@
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 21,
-            30 => 25,
-            37 => 12,
-            38 => 13,
-            39 => 11,
-            41 => 68,
-            45 => 74,
+            15 => 22,
+            30 => 27,
+            33 => 28,
+            37 => 14,
+            38 => 15,
+            39 => 13,
+            41 => 75,
+            45 => 82,
+            46 => match state {
+                31 => 101,
+                33 => 103,
+                _ => 86,
+            },
             49 => match state {
-                9 => 17,
-                15 => 22,
-                21 => 24,
-                26 => 27,
-                _ => 3,
+                11 => 18,
+                16 => 23,
+                22 => 25,
+                30 => 32,
+                _ => 5,
             },
-            50 => 31,
+            50 => 39,
             51 => match state {
-                7 => 62,
-                8 => 63,
-                10 => 65,
-                12 => 66,
-                16 => 69,
-                _ => 32,
+                9 => 69,
+                10 => 70,
+                12 => 73,
+                14 => 74,
+                17 => 76,
+                _ => 40,
             },
             52 => match state {
-                13 => 20,
-                _ => 4,
+                15 => 21,
+                _ => 6,
             },
             53 => match state {
-                11 => 19,
-                _ => 5,
+                13 => 20,
+                _ => 7,
             },
-            55 => 33,
+            55 => 41,
             60 => match state {
-                9 | 26 => 18,
-                1 => 29,
-                23 | 25 => 75,
-                _ => 6,
+                0 => 1,
+                11 | 30 => 19,
+                3 => 38,
+                24 | 27 => 83,
+                26 | 28 | 31 | 33 => 87,
+                29 => 95,
+                _ => 8,
             },
-            71 => 34,
+            62 => 71,
             72 => match state {
-                0 => 28,
-                14 => 67,
-                _ => 61,
+                0 => 34,
+                _ => 42,
             },
-            73 => 14,
-            82 => match state {
-                26 => 82,
-                _ => 64,
+            73 => match state {
+                2 => 37,
+                _ => 36,
             },
+            74 => 2,
+            76 => 29,
             83 => match state {
-                25 => 78,
-                _ => 76,
+                30 => 99,
+                _ => 72,
             },
-            85 => 35,
-            86 => 36,
-            89 => 7,
-            90 => 37,
+            84 => match state {
+                27 => 90,
+                _ => 84,
+            },
+            86 => 43,
+            87 => 44,
+            88 => match state {
+                28 => 93,
+                _ => 88,
+            },
+            90 => 9,
+            91 => 45,
             _ => 0,
         }
     }
@@ -467529,7 +482225,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::PathSegment;
+        type Success = ast::PathExpr;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -468550,19 +483246,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -468574,37 +483270,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -468616,7 +483312,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -468628,7 +483324,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -468646,43 +483342,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -468700,19 +483396,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -468724,7 +483420,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -468736,7 +483432,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -468748,25 +483444,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -468779,108 +483475,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -468892,43 +483588,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -468940,14 +483636,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -468965,248 +483661,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => __state_machine::SimulatedReduce::Accept,
             235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 115,
+                    nonterminal_produced: 114,
                 }
             }
-            236 => {
+            236 => __state_machine::SimulatedReduce::Accept,
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct PathSegmentParser {
+    pub(crate) struct PathExprParser {
         _priv: (),
     }
 
-    impl PathSegmentParser {
-        pub(crate) fn new() -> PathSegmentParser {
-            PathSegmentParser {
+    impl PathExprParser {
+        pub(crate) fn new() -> PathExprParser {
+            PathExprParser {
                 _priv: (),
             }
         }
@@ -469218,7 +483932,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::PathSegment, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::PathExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -469269,7 +483983,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::PathSegment,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::PathExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -469975,18 +484689,18 @@
                 __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             234 => {
-                // __PathSegment = PathSegment => ActionFn(4);
-                let __sym0 = __pop_Variant49(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action4::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             235 => {
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             236 => {
-                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __PathExpr = PathExpr => ActionFn(3);
+                let __sym0 = __pop_Variant48(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action3::<>(__sym0);
+                return Some(Ok(__nt));
             }
             237 => {
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -470024,6 +484738,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -470674,10 +485397,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -470688,11 +485411,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -470703,11 +485426,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -470718,13 +485441,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -470735,11 +485458,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -470750,10 +485473,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -470764,11 +485487,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -470779,10 +485502,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -470793,11 +485516,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -470808,10 +485531,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -470822,13 +485545,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -470839,13 +485562,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -470856,10 +485579,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -470870,14 +485593,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -470888,14 +485611,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -470906,10 +485629,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -470920,13 +485643,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -470937,13 +485660,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -470954,10 +485677,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -470968,14 +485691,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -470986,14 +485709,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -471004,10 +485727,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -471018,13 +485741,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -471035,10 +485758,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -471049,11 +485772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -471064,13 +485787,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -471081,14 +485804,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -471099,13 +485822,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -471116,10 +485839,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -471130,11 +485853,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -471145,13 +485868,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -471162,14 +485885,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -471180,13 +485903,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -471197,10 +485920,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -471211,11 +485934,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -471226,13 +485949,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -471243,14 +485966,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -471261,13 +485984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -471278,10 +486001,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -471292,11 +486015,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -471307,13 +486030,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -471324,14 +486047,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -471342,13 +486065,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -471359,10 +486082,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -471373,11 +486096,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -471388,13 +486111,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -471405,14 +486128,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -471423,13 +486146,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -471440,10 +486163,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -471454,11 +486177,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -471469,13 +486192,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -471486,14 +486209,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -471504,13 +486227,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -471521,10 +486244,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -471535,11 +486258,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -471550,13 +486273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -471567,14 +486290,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -471585,10 +486308,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -471599,10 +486322,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -471613,14 +486336,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -471631,7 +486354,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -471639,7 +486362,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -471650,14 +486373,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -471668,7 +486391,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -471676,7 +486399,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -471687,11 +486410,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471702,11 +486425,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471717,11 +486440,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471732,11 +486455,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471747,11 +486470,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471762,11 +486485,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471777,11 +486500,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471792,11 +486515,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -471807,11 +486530,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -471822,11 +486545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -471837,11 +486560,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -471852,11 +486575,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -471867,11 +486590,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -471882,11 +486605,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -471897,11 +486620,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -471912,11 +486635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -471927,14 +486650,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -471945,11 +486668,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -471960,10 +486683,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -471974,13 +486697,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -471991,11 +486714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -472006,11 +486729,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -472021,10 +486744,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -472035,13 +486758,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -472052,11 +486775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -472067,11 +486790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -472082,10 +486805,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -472096,13 +486819,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -472113,11 +486836,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -472128,11 +486851,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -472143,10 +486866,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -472157,13 +486880,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -472174,11 +486897,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -472189,11 +486912,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -472204,10 +486927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -472218,13 +486941,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -472235,11 +486958,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -472250,11 +486973,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -472265,10 +486988,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -472279,13 +487002,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -472296,11 +487019,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -472311,7 +487034,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -472322,7 +487045,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -472333,11 +487056,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -472348,10 +487071,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -472362,13 +487085,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -472379,11 +487102,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -472394,14 +487117,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -472412,11 +487135,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -472427,11 +487150,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -472442,14 +487165,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -472460,13 +487183,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -472477,13 +487200,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -472494,13 +487217,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -472511,11 +487234,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -472526,14 +487249,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -472544,11 +487267,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -472559,14 +487282,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -472577,11 +487300,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -472592,11 +487315,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -472607,10 +487330,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -472621,7 +487344,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -472629,7 +487352,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -472640,14 +487363,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -472658,11 +487381,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -472673,10 +487396,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -472687,7 +487410,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -472696,7 +487419,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -472707,7 +487430,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -472718,7 +487441,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -472729,7 +487452,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -472743,7 +487466,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -472754,7 +487477,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -472766,7 +487489,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -472777,7 +487500,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -472790,7 +487513,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -472801,7 +487524,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -472812,7 +487535,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -472823,7 +487546,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -472836,7 +487559,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -472847,7 +487570,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -472858,7 +487581,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -472869,7 +487592,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -472881,7 +487604,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -472892,7 +487615,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -472902,7 +487625,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -472913,11 +487636,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -472928,11 +487651,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -472943,10 +487666,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -472957,7 +487680,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -472966,36 +487724,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -473005,36 +487763,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -473045,18 +487803,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -473066,18 +487824,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -473088,18 +487846,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -473109,143 +487867,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -473255,18 +488013,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -473275,412 +488033,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -473692,18 +488450,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -473712,262 +488470,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -473976,18 +488734,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -473995,388 +488753,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -474389,249 +489147,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
-        let __sym0 = __pop_Variant48(__symbols);
+        // __PathSegment = PathSegment => ActionFn(5);
+        let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -474644,59 +489417,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__PathSegment::PathSegmentParser;
+pub(crate) use self::__parse__PathExpr::PathExprParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__PathSegments {
+mod __parse__PathSegment {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -474778,171 +489551,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 3
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        0, 0, 0, 50, 0, 0, 0, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 4
-        0, 0, 0, 47, 0, 0, 0, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 56, -121, -121, 57, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 63, -121, 0,
         // State 5
-        0, 53, -121, -121, 54, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 60, -121, 0,
+        0, 0, 64, -111, 0, 0, -111, 65, -111, -111, -111, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 6
-        0, 0, 61, -111, 0, 0, -111, 62, -111, -111, -111, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, -166, -166, -166, -166, 16, -166, -166, -166, -166, -166, 0, 2, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 3, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 7
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 3, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 4, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 8
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 17, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 9
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 18, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 10
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 11
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 12
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 13
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 14
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 2, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 3, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 15
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 3, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 4, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        44, 0, 0, 9, 0, 10, -82, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 16
-        41, 0, 0, 10, 0, 11, -82, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 17
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        0, 0, 0, 50, 0, 0, 77, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 18
-        0, 0, 0, 47, 0, 0, 71, 0, 48, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, -166, -166, -166, -166, 16, -166, -166, -166, -166, -166, 0, 2, 0, -166, 0, 78, 0, -166, -166, 0, -166, -166, -166, 3, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 19
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 3, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 4, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, -164, -164, -164, 0,
+        0, 0, 64, -110, 0, 0, -110, 65, -110, -110, -110, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 20
-        0, 0, 61, -110, 0, 0, -110, 62, -110, -110, -110, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 56, -120, -120, 57, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 63, -120, 0,
         // State 21
-        0, 53, -120, -120, 54, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 55, 56, 0, 57, 58, 59, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 60, -120, 0,
+        44, 0, 0, 9, 0, 10, -84, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 22
-        41, 0, 0, 10, 0, 11, -84, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        0, 0, 0, 50, 0, 0, -81, 0, 51, 81, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 23
-        0, 0, 0, 47, 0, 0, -81, 0, 48, 74, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 50, 0, 0, -83, 0, 51, 85, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 25
-        0, 0, 0, 47, 0, 0, -83, 0, 48, 78, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 27
-        41, 0, 0, 10, 0, 11, 0, 12, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 33, 0, 0, 44, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 46,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 47, 0, 0, 0, 0, 48, -190, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        44, 0, 0, 9, 0, 10, 0, 11, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 36, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 49,
         // State 30
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 50, 0, 0, 0, 0, 51, -192, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, -192, 0,
         // State 32
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 35
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 36
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 37
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 38
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 39
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 40
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 41
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 42
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 43
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 44
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
-        // State 45
         -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 45
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 46
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 47
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 48
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 49
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 50
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 51
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 52
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 53
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 54
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 55
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 56
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 57
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 58
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 59
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 60
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 61
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 62
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 63
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 64
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 65
-        0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 66
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 67
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 68
-        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 69
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0,
         // State 70
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 71
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 72
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 73
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -474951,7 +489766,7 @@
         // State 0
         0,
         // State 1
-        -236,
+        0,
         // State 2
         0,
         // State 3
@@ -475007,19 +489822,19 @@
         // State 28
         0,
         // State 29
-        -167,
+        0,
         // State 30
-        -168,
+        0,
         // State 31
-        -165,
+        0,
         // State 32
-        -138,
-        // State 33
         0,
+        // State 33
+        -238,
         // State 34
-        0,
+        -167,
         // State 35
-        0,
+        -138,
         // State 36
         0,
         // State 37
@@ -475047,13 +489862,13 @@
         // State 48
         0,
         // State 49
-        -166,
+        0,
         // State 50
         0,
         // State 51
         0,
         // State 52
-        0,
+        -168,
         // State 53
         0,
         // State 54
@@ -475114,68 +489929,122 @@
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 22,
+            15 => 21,
             30 => 26,
-            37 => 13,
-            38 => 14,
-            39 => 12,
-            41 => 68,
-            45 => 74,
+            33 => 27,
+            37 => 12,
+            38 => 13,
+            39 => 11,
+            41 => 74,
+            45 => 81,
+            46 => match state {
+                30 => 100,
+                32 => 102,
+                _ => 85,
+            },
             49 => match state {
-                10 => 18,
-                16 => 23,
-                22 => 25,
-                27 => 28,
-                _ => 4,
+                9 => 17,
+                15 => 22,
+                21 => 24,
+                29 => 31,
+                _ => 3,
             },
-            50 => 33,
+            50 => 36,
             51 => match state {
-                8 => 63,
-                9 => 64,
-                11 => 66,
-                13 => 67,
-                17 => 69,
-                _ => 34,
+                7 => 67,
+                8 => 68,
+                10 => 71,
+                12 => 72,
+                16 => 75,
+                _ => 37,
             },
             52 => match state {
-                14 => 21,
-                _ => 5,
+                13 => 20,
+                _ => 4,
             },
             53 => match state {
-                12 => 20,
-                _ => 6,
+                11 => 19,
+                _ => 5,
             },
-            55 => 35,
+            55 => 38,
             60 => match state {
-                10 | 27 => 19,
-                2 => 31,
-                24 | 26 => 75,
-                _ => 7,
-            },
-            71 => 36,
-            72 => match state {
-                1 | 15 => 30,
-                _ => 29,
+                9 | 29 => 18,
+                1 => 34,
+                23 | 26 => 82,
+                25 | 27 | 30 | 32 => 86,
+                28 => 94,
+                _ => 6,
             },
+            62 => 69,
+            72 => 39,
             73 => match state {
-                0 => 1,
-                _ => 15,
-            },
-            82 => match state {
-                27 => 82,
-                _ => 65,
+                0 => 33,
+                14 => 73,
+                _ => 66,
             },
+            74 => 14,
+            76 => 28,
             83 => match state {
-                26 => 78,
-                _ => 76,
+                29 => 98,
+                _ => 70,
             },
-            85 => 37,
-            86 => 38,
-            89 => 8,
-            90 => 39,
+            84 => match state {
+                26 => 89,
+                _ => 83,
+            },
+            86 => 40,
+            87 => 41,
+            88 => match state {
+                27 => 92,
+                _ => 87,
+            },
+            90 => 7,
+            91 => 42,
             _ => 0,
         }
     }
@@ -475270,7 +490139,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = Vec<ast::PathSegment>;
+        type Success = ast::PathSegment;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -476291,19 +491160,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -476315,37 +491184,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -476357,7 +491226,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -476369,7 +491238,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -476387,43 +491256,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -476441,19 +491310,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -476465,7 +491334,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -476477,7 +491346,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -476489,25 +491358,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -476520,108 +491389,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -476633,43 +491502,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -476681,14 +491550,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -476706,260 +491575,278 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => __state_machine::SimulatedReduce::Accept,
             236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 116,
+                    nonterminal_produced: 115,
                 }
             }
-            237 => {
+            237 => __state_machine::SimulatedReduce::Accept,
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub struct PathSegmentsParser {
+    pub(crate) struct PathSegmentParser {
         _priv: (),
     }
 
-    impl PathSegmentsParser {
-        pub fn new() -> PathSegmentsParser {
-            PathSegmentsParser {
+    impl PathSegmentParser {
+        pub(crate) fn new() -> PathSegmentParser {
+            PathSegmentParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub fn parse<
+        pub(crate) fn parse<
             __TOKEN: __ToTriple<>,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<Vec<ast::PathSegment>, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::PathSegment, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -477010,7 +491897,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<Vec<ast::PathSegment>,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::PathSegment,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -477719,18 +492606,18 @@
                 __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             235 => {
-                // __PathSegments = PathSegments => ActionFn(3);
-                let __sym0 = __pop_Variant50(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action3::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             236 => {
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             237 => {
-                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __PathSegment = PathSegment => ActionFn(5);
+                let __sym0 = __pop_Variant49(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action5::<>(__sym0);
+                return Some(Ok(__nt));
             }
             238 => {
                 __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -477765,6 +492652,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -478415,10 +493311,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -478429,11 +493325,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -478444,11 +493340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -478459,13 +493355,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -478476,11 +493372,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -478491,10 +493387,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -478505,11 +493401,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -478520,10 +493416,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -478534,11 +493430,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -478549,10 +493445,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -478563,13 +493459,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -478580,13 +493476,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -478597,10 +493493,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -478611,14 +493507,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -478629,14 +493525,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -478647,10 +493543,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -478661,13 +493557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -478678,13 +493574,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -478695,10 +493591,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -478709,14 +493605,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -478727,14 +493623,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -478745,10 +493641,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -478759,13 +493655,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -478776,10 +493672,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -478790,11 +493686,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -478805,13 +493701,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -478822,14 +493718,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -478840,13 +493736,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -478857,10 +493753,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -478871,11 +493767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -478886,13 +493782,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -478903,14 +493799,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -478921,13 +493817,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -478938,10 +493834,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -478952,11 +493848,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -478967,13 +493863,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -478984,14 +493880,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -479002,13 +493898,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -479019,10 +493915,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -479033,11 +493929,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -479048,13 +493944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -479065,14 +493961,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -479083,13 +493979,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -479100,10 +493996,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -479114,11 +494010,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -479129,13 +494025,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -479146,14 +494042,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -479164,13 +494060,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -479181,10 +494077,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -479195,11 +494091,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -479210,13 +494106,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -479227,14 +494123,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -479245,13 +494141,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -479262,10 +494158,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -479276,11 +494172,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -479291,13 +494187,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -479308,14 +494204,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -479326,10 +494222,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -479340,10 +494236,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -479354,14 +494250,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -479372,7 +494268,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -479380,7 +494276,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -479391,14 +494287,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -479409,7 +494305,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -479417,7 +494313,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -479428,11 +494324,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479443,11 +494339,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479458,11 +494354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479473,11 +494369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479488,11 +494384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479503,11 +494399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479518,11 +494414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479533,11 +494429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -479548,11 +494444,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -479563,11 +494459,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -479578,11 +494474,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -479593,11 +494489,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -479608,11 +494504,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -479623,11 +494519,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -479638,11 +494534,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -479653,11 +494549,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -479668,14 +494564,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -479686,11 +494582,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -479701,10 +494597,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -479715,13 +494611,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -479732,11 +494628,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -479747,11 +494643,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -479762,10 +494658,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -479776,13 +494672,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -479793,11 +494689,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -479808,11 +494704,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -479823,10 +494719,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -479837,13 +494733,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -479854,11 +494750,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -479869,11 +494765,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -479884,10 +494780,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -479898,13 +494794,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -479915,11 +494811,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -479930,11 +494826,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -479945,10 +494841,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -479959,13 +494855,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -479976,11 +494872,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -479991,11 +494887,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -480006,10 +494902,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -480020,13 +494916,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -480037,11 +494933,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -480052,7 +494948,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -480063,7 +494959,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -480074,11 +494970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -480089,10 +494985,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -480103,13 +494999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -480120,11 +495016,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -480135,14 +495031,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -480153,11 +495049,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -480168,11 +495064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -480183,14 +495079,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -480201,13 +495097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -480218,13 +495114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -480235,13 +495131,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -480252,11 +495148,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -480267,14 +495163,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -480285,11 +495181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -480300,14 +495196,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -480318,11 +495214,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -480333,11 +495229,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -480348,10 +495244,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -480362,7 +495258,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -480370,7 +495266,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -480381,14 +495277,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -480399,11 +495295,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -480414,10 +495310,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -480428,7 +495324,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -480437,7 +495333,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -480448,7 +495344,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -480459,7 +495355,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -480470,7 +495366,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -480484,7 +495380,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -480495,7 +495391,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -480507,7 +495403,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -480518,7 +495414,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -480531,7 +495427,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -480542,7 +495438,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -480553,7 +495449,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -480564,7 +495460,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -480577,7 +495473,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -480588,7 +495484,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -480599,7 +495495,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -480610,7 +495506,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -480622,7 +495518,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -480633,7 +495529,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480643,7 +495539,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -480654,11 +495550,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -480669,11 +495565,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -480684,10 +495580,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -480698,7 +495594,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -480707,36 +495638,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480746,36 +495677,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -480786,18 +495717,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480807,18 +495738,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -480829,18 +495760,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -480850,143 +495781,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -480996,18 +495927,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -481016,412 +495947,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -481433,18 +496364,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -481453,262 +496384,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -481717,18 +496648,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -481736,388 +496667,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -482130,249 +497061,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
-        let __sym0 = __pop_Variant49(__symbols);
+        // __PathSegments = PathSegments => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action4::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -482385,59 +497331,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub use self::__parse__PathSegments::PathSegmentsParser;
+pub(crate) use self::__parse__PathSegment::PathSegmentParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__RefType {
+mod __parse__PathSegments {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -482519,13 +497465,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 4
+        0, 0, 0, 52, 0, 0, 0, 0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
+        // State 5
+        0, 58, -121, -121, 59, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 60, 61, 0, 62, 63, 64, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 65, -121, 0,
+        // State 6
+        0, 0, 66, -111, 0, 0, -111, 67, -111, -111, -111, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        // State 7
+        0, -166, -166, -166, -166, 17, -166, -166, -166, -166, -166, 0, 3, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 4, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        // State 8
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 9
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 18, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 10
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 11
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 12
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 13
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 14
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 15
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 3, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 4, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        // State 16
+        46, 0, 0, 10, 0, 11, -82, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 17
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 18
+        0, 0, 0, 52, 0, 0, 77, 0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
+        // State 19
+        0, -166, -166, -166, -166, 17, -166, -166, -166, -166, -166, 0, 3, 0, -166, 0, 78, 0, -166, -166, 0, -166, -166, -166, 4, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
+        // State 20
+        0, 0, 66, -110, 0, 0, -110, 67, -110, -110, -110, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        // State 21
+        0, 58, -120, -120, 59, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 60, 61, 0, 62, 63, 64, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 65, -120, 0,
+        // State 22
+        46, 0, 0, 10, 0, 11, -84, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 23
+        0, 0, 0, 52, 0, 0, -81, 0, 53, 81, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
+        // State 24
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        // State 25
+        0, 0, 0, 52, 0, 0, -83, 0, 53, 85, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
+        // State 26
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 27
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 28
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 29
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 30
+        46, 0, 0, 10, 0, 11, 0, 12, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 38, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
+        // State 31
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 32
+        0, 0, 0, 52, 0, 0, 0, 0, 53, -192, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -192, 0,
+        // State 33
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 34
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
+        // State 35
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
+        // State 36
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        // State 37
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        // State 38
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        // State 39
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        // State 40
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
+        // State 41
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
+        // State 42
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        // State 43
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        // State 44
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        // State 45
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
+        // State 46
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 47
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        // State 48
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        // State 49
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
+        // State 50
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
+        // State 51
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        // State 52
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        // State 53
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        // State 54
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        // State 55
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        // State 56
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        // State 57
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        // State 58
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 59
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 60
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        // State 61
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        // State 62
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 63
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 64
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 65
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 66
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 67
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 68
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        // State 69
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        // State 70
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
+        // State 71
+        0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 72
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        // State 73
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        // State 74
+        0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 75
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        // State 76
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        // State 77
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 78
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
+        // State 79
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        // State 80
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 81
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
+        // State 82
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 83
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 84
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -482534,15 +497680,287 @@
         // State 0
         0,
         // State 1
-        -237,
+        -239,
         // State 2
-        -171,
+        0,
         // State 3
-        -172,
+        0,
+        // State 4
+        0,
+        // State 5
+        0,
+        // State 6
+        0,
+        // State 7
+        0,
+        // State 8
+        0,
+        // State 9
+        0,
+        // State 10
+        0,
+        // State 11
+        0,
+        // State 12
+        0,
+        // State 13
+        0,
+        // State 14
+        0,
+        // State 15
+        0,
+        // State 16
+        0,
+        // State 17
+        0,
+        // State 18
+        0,
+        // State 19
+        0,
+        // State 20
+        0,
+        // State 21
+        0,
+        // State 22
+        0,
+        // State 23
+        0,
+        // State 24
+        0,
+        // State 25
+        0,
+        // State 26
+        0,
+        // State 27
+        0,
+        // State 28
+        0,
+        // State 29
+        0,
+        // State 30
+        0,
+        // State 31
+        0,
+        // State 32
+        0,
+        // State 33
+        0,
+        // State 34
+        -169,
+        // State 35
+        -170,
+        // State 36
+        -167,
+        // State 37
+        -138,
+        // State 38
+        0,
+        // State 39
+        0,
+        // State 40
+        0,
+        // State 41
+        0,
+        // State 42
+        0,
+        // State 43
+        0,
+        // State 44
+        0,
+        // State 45
+        0,
+        // State 46
+        0,
+        // State 47
+        0,
+        // State 48
+        0,
+        // State 49
+        0,
+        // State 50
+        0,
+        // State 51
+        0,
+        // State 52
+        0,
+        // State 53
+        0,
+        // State 54
+        -168,
+        // State 55
+        0,
+        // State 56
+        0,
+        // State 57
+        0,
+        // State 58
+        0,
+        // State 59
+        0,
+        // State 60
+        0,
+        // State 61
+        0,
+        // State 62
+        0,
+        // State 63
+        0,
+        // State 64
+        0,
+        // State 65
+        0,
+        // State 66
+        0,
+        // State 67
+        0,
+        // State 68
+        0,
+        // State 69
+        0,
+        // State 70
+        0,
+        // State 71
+        0,
+        // State 72
+        0,
+        // State 73
+        0,
+        // State 74
+        0,
+        // State 75
+        0,
+        // State 76
+        0,
+        // State 77
+        0,
+        // State 78
+        0,
+        // State 79
+        0,
+        // State 80
+        0,
+        // State 81
+        0,
+        // State 82
+        0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            75 => 1,
+            15 => 22,
+            30 => 27,
+            33 => 28,
+            37 => 13,
+            38 => 14,
+            39 => 12,
+            41 => 74,
+            45 => 81,
+            46 => match state {
+                31 => 100,
+                33 => 102,
+                _ => 85,
+            },
+            49 => match state {
+                10 => 18,
+                16 => 23,
+                22 => 25,
+                30 => 32,
+                _ => 4,
+            },
+            50 => 38,
+            51 => match state {
+                8 => 68,
+                9 => 69,
+                11 => 72,
+                13 => 73,
+                17 => 75,
+                _ => 39,
+            },
+            52 => match state {
+                14 => 21,
+                _ => 5,
+            },
+            53 => match state {
+                12 => 20,
+                _ => 6,
+            },
+            55 => 40,
+            60 => match state {
+                10 | 30 => 19,
+                2 => 36,
+                24 | 27 => 82,
+                26 | 28 | 31 | 33 => 86,
+                29 => 94,
+                _ => 7,
+            },
+            62 => 70,
+            72 => 41,
+            73 => match state {
+                1 | 15 => 35,
+                _ => 34,
+            },
+            74 => match state {
+                0 => 1,
+                _ => 15,
+            },
+            76 => 29,
+            83 => match state {
+                30 => 98,
+                _ => 71,
+            },
+            84 => match state {
+                27 => 89,
+                _ => 83,
+            },
+            86 => 42,
+            87 => 43,
+            88 => match state {
+                28 => 92,
+                _ => 87,
+            },
+            90 => 8,
+            91 => 44,
             _ => 0,
         }
     }
@@ -482637,7 +498055,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::RefType;
+        type Success = Vec<ast::PathSegment>;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -483658,19 +499076,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -483682,37 +499100,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -483724,7 +499142,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -483736,7 +499154,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -483754,43 +499172,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -483808,19 +499226,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -483832,7 +499250,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -483844,7 +499262,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -483856,25 +499274,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -483887,108 +499305,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -484000,43 +499418,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -484048,14 +499466,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -484073,260 +499491,278 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => __state_machine::SimulatedReduce::Accept,
             237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 117,
+                    nonterminal_produced: 116,
                 }
             }
-            238 => {
+            238 => __state_machine::SimulatedReduce::Accept,
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct RefTypeParser {
+    pub struct PathSegmentsParser {
         _priv: (),
     }
 
-    impl RefTypeParser {
-        pub(crate) fn new() -> RefTypeParser {
-            RefTypeParser {
+    impl PathSegmentsParser {
+        pub fn new() -> PathSegmentsParser {
+            PathSegmentsParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub(crate) fn parse<
+        pub fn parse<
             __TOKEN: __ToTriple<>,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::RefType, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<Vec<ast::PathSegment>, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -484377,7 +499813,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::RefType,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<Vec<ast::PathSegment>,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -485089,18 +500525,18 @@
                 __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             236 => {
-                // __RefType = RefType => ActionFn(28);
-                let __sym0 = __pop_Variant52(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action28::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             237 => {
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             238 => {
-                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __PathSegments = PathSegments => ActionFn(4);
+                let __sym0 = __pop_Variant50(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action4::<>(__sym0);
+                return Some(Ok(__nt));
             }
             239 => {
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -485132,6 +500568,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -485782,10 +501227,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -485796,11 +501241,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -485811,11 +501256,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -485826,13 +501271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -485843,11 +501288,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -485858,10 +501303,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -485872,11 +501317,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -485887,10 +501332,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -485901,11 +501346,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -485916,10 +501361,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -485930,13 +501375,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -485947,13 +501392,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -485964,10 +501409,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -485978,14 +501423,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -485996,14 +501441,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -486014,10 +501459,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -486028,13 +501473,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -486045,13 +501490,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -486062,10 +501507,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -486076,14 +501521,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -486094,14 +501539,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -486112,10 +501557,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -486126,13 +501571,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -486143,10 +501588,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -486157,11 +501602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -486172,13 +501617,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -486189,14 +501634,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -486207,13 +501652,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -486224,10 +501669,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -486238,11 +501683,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -486253,13 +501698,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -486270,14 +501715,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -486288,13 +501733,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -486305,10 +501750,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -486319,11 +501764,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -486334,13 +501779,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -486351,14 +501796,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -486369,13 +501814,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -486386,10 +501831,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -486400,11 +501845,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -486415,13 +501860,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -486432,14 +501877,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -486450,13 +501895,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -486467,10 +501912,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -486481,11 +501926,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -486496,13 +501941,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -486513,14 +501958,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -486531,13 +501976,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -486548,10 +501993,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -486562,11 +502007,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -486577,13 +502022,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -486594,14 +502039,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -486612,13 +502057,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -486629,10 +502074,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -486643,11 +502088,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -486658,13 +502103,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -486675,14 +502120,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -486693,10 +502138,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -486707,10 +502152,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -486721,14 +502166,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -486739,7 +502184,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -486747,7 +502192,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -486758,14 +502203,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -486776,7 +502221,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -486784,7 +502229,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -486795,11 +502240,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486810,11 +502255,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486825,11 +502270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486840,11 +502285,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486855,11 +502300,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486870,11 +502315,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486885,11 +502330,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486900,11 +502345,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -486915,11 +502360,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -486930,11 +502375,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -486945,11 +502390,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -486960,11 +502405,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486975,11 +502420,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -486990,11 +502435,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -487005,11 +502450,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -487020,11 +502465,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -487035,14 +502480,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -487053,11 +502498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -487068,10 +502513,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -487082,13 +502527,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -487099,11 +502544,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -487114,11 +502559,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -487129,10 +502574,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -487143,13 +502588,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -487160,11 +502605,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -487175,11 +502620,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -487190,10 +502635,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -487204,13 +502649,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -487221,11 +502666,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -487236,11 +502681,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -487251,10 +502696,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -487265,13 +502710,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -487282,11 +502727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -487297,11 +502742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -487312,10 +502757,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -487326,13 +502771,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -487343,11 +502788,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -487358,11 +502803,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -487373,10 +502818,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -487387,13 +502832,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -487404,11 +502849,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -487419,7 +502864,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -487430,7 +502875,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -487441,11 +502886,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -487456,10 +502901,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -487470,13 +502915,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -487487,11 +502932,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -487502,14 +502947,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -487520,11 +502965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -487535,11 +502980,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -487550,14 +502995,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -487568,13 +503013,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -487585,13 +503030,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -487602,13 +503047,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -487619,11 +503064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -487634,14 +503079,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -487652,11 +503097,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -487667,14 +503112,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -487685,11 +503130,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -487700,11 +503145,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -487715,10 +503160,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -487729,7 +503174,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -487737,7 +503182,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -487748,14 +503193,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -487766,11 +503211,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -487781,10 +503226,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -487795,7 +503240,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -487804,7 +503249,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -487815,7 +503260,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -487826,7 +503271,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -487837,7 +503282,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -487851,7 +503296,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -487862,7 +503307,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -487874,7 +503319,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -487885,7 +503330,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -487898,7 +503343,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -487909,7 +503354,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -487920,7 +503365,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -487931,7 +503376,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -487944,7 +503389,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -487955,7 +503400,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -487966,7 +503411,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -487977,7 +503422,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -487989,7 +503434,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -488000,7 +503445,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488010,7 +503455,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -488021,11 +503466,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -488036,11 +503481,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -488051,10 +503496,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -488065,7 +503510,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -488074,36 +503554,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488113,36 +503593,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -488153,18 +503633,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488174,18 +503654,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -488196,18 +503676,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -488217,143 +503697,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -488363,18 +503843,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -488383,412 +503863,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -488800,18 +504280,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -488820,262 +504300,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -489084,18 +504564,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -489103,388 +504583,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -489497,249 +504977,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
-        let __sym0 = __pop_Variant50(__symbols);
+        // __RefType = RefType => ActionFn(29);
+        let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        let __nt = super::__action29::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -489752,59 +505247,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__RefType::RefTypeParser;
+pub use self::__parse__PathSegments::PathSegmentsParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__ReturnStmt {
+mod __parse__RefType {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -489886,175 +505381,13 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 46, 0, 0, 0, 0, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 51, -121, -121, 52, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 58, -121, 0,
-        // State 4
-        0, 0, 59, -111, 0, 0, -111, 60, -111, -111, -111, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
-        // State 5
-        0, -164, -164, -164, -164, 15, -164, -164, -164, -164, -164, 0, 16, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 17, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
-        // State 6
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 7
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 18, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 8
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 9
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 10
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 11
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 12
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 13
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 16, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 17, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
-        // State 14
-        39, 0, 0, 8, 0, 9, -82, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 16
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 17
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 18
-        0, 0, 0, 46, 0, 0, 72, 0, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
-        // State 19
-        0, -164, -164, -164, -164, 15, -164, -164, -164, -164, -164, 0, 16, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 17, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, -164, -164, -164, 0,
-        // State 20
-        0, 0, 59, -110, 0, 0, -110, 60, -110, -110, -110, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
-        // State 21
-        0, 51, -120, -120, 52, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 58, -120, 0,
-        // State 22
-        39, 0, 0, 8, 0, 9, -84, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 23
-        0, 0, 0, 46, 0, 0, -81, 0, 47, 75, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
-        // State 24
-        0, 0, 0, 46, 0, 0, 0, 0, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
-        // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
-        // State 26
-        0, 0, 0, 46, 0, 0, -83, 0, 47, 80, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
-        // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
-        // State 28
-        39, 0, 0, 8, 0, 9, 0, 10, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 42, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
-        // State 29
-        0, 0, 0, 46, 0, 0, 0, 0, 47, -190, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, -190, 0,
-        // State 30
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 31
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
-        // State 32
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
-        // State 33
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
-        // State 34
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
-        // State 35
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
-        // State 36
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
-        // State 37
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
-        // State 38
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
-        // State 39
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
-        // State 40
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
-        // State 41
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
-        // State 42
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
-        // State 43
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
-        // State 44
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
-        // State 45
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
-        // State 46
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
-        // State 47
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
-        // State 48
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
-        // State 49
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
-        // State 50
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
-        // State 51
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
-        // State 52
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 53
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 54
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 55
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 56
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 57
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 58
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 59
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 60
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 61
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
-        // State 62
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
-        // State 63
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
-        // State 64
-        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 65
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
-        // State 66
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
-        // State 67
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
-        // State 68
-        0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 69
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
-        // State 70
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
-        // State 71
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
-        // State 72
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
-        // State 73
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
-        // State 74
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 75
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
-        // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0,
-        // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 79
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 81
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 84
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -490063,234 +505396,15 @@
         // State 0
         0,
         // State 1
-        -176,
+        -240,
         // State 2
-        -175,
+        -173,
         // State 3
-        -121,
-        // State 4
-        -111,
-        // State 5
-        -164,
-        // State 6
-        0,
-        // State 7
-        0,
-        // State 8
-        0,
-        // State 9
-        0,
-        // State 10
-        0,
-        // State 11
-        0,
-        // State 12
-        0,
-        // State 13
-        -163,
-        // State 14
-        0,
-        // State 15
-        0,
-        // State 16
-        0,
-        // State 17
-        0,
-        // State 18
-        0,
-        // State 19
-        0,
-        // State 20
-        -110,
-        // State 21
-        -120,
-        // State 22
-        0,
-        // State 23
-        0,
-        // State 24
-        0,
-        // State 25
-        0,
-        // State 26
-        0,
-        // State 27
-        0,
-        // State 28
-        0,
-        // State 29
-        0,
-        // State 30
-        -238,
-        // State 31
-        -117,
-        // State 32
-        -119,
-        // State 33
-        -197,
-        // State 34
-        -211,
-        // State 35
-        -112,
-        // State 36
-        -195,
-        // State 37
-        -196,
-        // State 38
-        0,
-        // State 39
-        0,
-        // State 40
-        -209,
-        // State 41
-        -138,
-        // State 42
-        -208,
-        // State 43
-        -210,
-        // State 44
-        0,
-        // State 45
-        0,
-        // State 46
-        0,
-        // State 47
-        0,
-        // State 48
-        0,
-        // State 49
-        0,
-        // State 50
-        0,
-        // State 51
-        0,
-        // State 52
-        0,
-        // State 53
-        0,
-        // State 54
-        0,
-        // State 55
-        0,
-        // State 56
-        0,
-        // State 57
-        0,
-        // State 58
-        0,
-        // State 59
-        0,
-        // State 60
-        0,
-        // State 61
-        -167,
-        // State 62
-        -116,
-        // State 63
-        -114,
-        // State 64
-        0,
-        // State 65
-        -115,
-        // State 66
-        -118,
-        // State 67
-        -168,
-        // State 68
-        0,
-        // State 69
-        -165,
-        // State 70
-        -113,
-        // State 71
-        -194,
-        // State 72
-        -198,
-        // State 73
-        -124,
-        // State 74
-        0,
-        // State 75
-        -166,
-        // State 76
-        0,
-        // State 77
-        0,
-        // State 78
-        0,
-        // State 79
-        0,
-        // State 80
-        0,
-        // State 81
-        0,
-        // State 82
-        0,
-        // State 83
-        0,
-        // State 84
-        0,
+        -174,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 22,
-            30 => 27,
-            37 => 11,
-            38 => 12,
-            39 => 10,
-            41 => 68,
-            45 => 76,
-            49 => match state {
-                8 => 18,
-                14 => 23,
-                16 => 24,
-                22 => 26,
-                28 => 29,
-                _ => 2,
-            },
-            50 => 31,
-            51 => match state {
-                6 => 62,
-                7 => 63,
-                9 => 65,
-                11 => 66,
-                17 => 70,
-                _ => 32,
-            },
-            52 => match state {
-                12 => 21,
-                _ => 3,
-            },
-            53 => match state {
-                10 => 20,
-                _ => 4,
-            },
-            55 => 33,
-            60 => match state {
-                8 | 28 => 19,
-                15 => 69,
-                25 | 27 => 77,
-                _ => 5,
-            },
-            71 => 34,
-            72 => match state {
-                13 => 67,
-                _ => 61,
-            },
-            73 => 13,
-            77 => 30,
-            82 => match state {
-                28 => 84,
-                _ => 64,
-            },
-            83 => match state {
-                27 => 80,
-                _ => 78,
-            },
-            85 => 35,
-            86 => 36,
-            89 => 6,
-            90 => 37,
+            76 => 1,
             _ => 0,
         }
     }
@@ -490385,7 +505499,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::ReturnStmt;
+        type Success = ast::RefType;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -491406,19 +506520,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -491430,37 +506544,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -491472,7 +506586,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -491484,7 +506598,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -491502,43 +506616,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -491556,19 +506670,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -491580,7 +506694,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -491592,7 +506706,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -491604,25 +506718,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -491635,108 +506749,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -491748,43 +506862,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -491796,14 +506910,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -491821,248 +506935,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => __state_machine::SimulatedReduce::Accept,
             238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 118,
+                    nonterminal_produced: 117,
                 }
             }
-            239 => {
+            239 => __state_machine::SimulatedReduce::Accept,
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct ReturnStmtParser {
+    pub(crate) struct RefTypeParser {
         _priv: (),
     }
 
-    impl ReturnStmtParser {
-        pub(crate) fn new() -> ReturnStmtParser {
-            ReturnStmtParser {
+    impl RefTypeParser {
+        pub(crate) fn new() -> RefTypeParser {
+            RefTypeParser {
                 _priv: (),
             }
         }
@@ -492074,7 +507206,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::ReturnStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::RefType, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -492125,7 +507257,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::ReturnStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::RefType,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -492840,18 +507972,18 @@
                 __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             237 => {
-                // __ReturnStmt = ReturnStmt => ActionFn(10);
-                let __sym0 = __pop_Variant54(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action10::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             238 => {
                 __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             239 => {
-                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __RefType = RefType => ActionFn(29);
+                let __sym0 = __pop_Variant52(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action29::<>(__sym0);
+                return Some(Ok(__nt));
             }
             240 => {
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -492880,6 +508012,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -493530,10 +508671,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -493544,11 +508685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -493559,11 +508700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -493574,13 +508715,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -493591,11 +508732,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -493606,10 +508747,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -493620,11 +508761,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -493635,10 +508776,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -493649,11 +508790,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -493664,10 +508805,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -493678,13 +508819,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -493695,13 +508836,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -493712,10 +508853,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -493726,14 +508867,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -493744,14 +508885,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -493762,10 +508903,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -493776,13 +508917,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -493793,13 +508934,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -493810,10 +508951,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -493824,14 +508965,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -493842,14 +508983,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -493860,10 +509001,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -493874,13 +509015,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -493891,10 +509032,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -493905,11 +509046,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -493920,13 +509061,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -493937,14 +509078,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -493955,13 +509096,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -493972,10 +509113,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -493986,11 +509127,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -494001,13 +509142,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -494018,14 +509159,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -494036,13 +509177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -494053,10 +509194,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -494067,11 +509208,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -494082,13 +509223,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -494099,14 +509240,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -494117,13 +509258,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -494134,10 +509275,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -494148,11 +509289,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -494163,13 +509304,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -494180,14 +509321,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -494198,13 +509339,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -494215,10 +509356,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -494229,11 +509370,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -494244,13 +509385,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -494261,14 +509402,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -494279,13 +509420,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -494296,10 +509437,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -494310,11 +509451,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -494325,13 +509466,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -494342,14 +509483,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -494360,13 +509501,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -494377,10 +509518,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -494391,11 +509532,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -494406,13 +509547,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -494423,14 +509564,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -494441,10 +509582,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -494455,10 +509596,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -494469,14 +509610,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -494487,7 +509628,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -494495,7 +509636,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -494506,14 +509647,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -494524,7 +509665,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -494532,7 +509673,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -494543,11 +509684,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494558,11 +509699,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494573,11 +509714,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494588,11 +509729,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494603,11 +509744,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494618,11 +509759,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494633,11 +509774,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494648,11 +509789,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -494663,11 +509804,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -494678,11 +509819,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -494693,11 +509834,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -494708,11 +509849,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494723,11 +509864,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494738,11 +509879,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494753,11 +509894,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494768,11 +509909,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -494783,14 +509924,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -494801,11 +509942,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -494816,10 +509957,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -494830,13 +509971,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -494847,11 +509988,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -494862,11 +510003,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -494877,10 +510018,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -494891,13 +510032,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -494908,11 +510049,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -494923,11 +510064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -494938,10 +510079,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -494952,13 +510093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -494969,11 +510110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -494984,11 +510125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -494999,10 +510140,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -495013,13 +510154,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -495030,11 +510171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -495045,11 +510186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -495060,10 +510201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -495074,13 +510215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -495091,11 +510232,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -495106,11 +510247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -495121,10 +510262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -495135,13 +510276,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -495152,11 +510293,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -495167,7 +510308,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -495178,7 +510319,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -495189,11 +510330,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -495204,10 +510345,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -495218,13 +510359,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -495235,11 +510376,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -495250,14 +510391,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -495268,11 +510409,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -495283,11 +510424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -495298,14 +510439,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -495316,13 +510457,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -495333,13 +510474,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -495350,13 +510491,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -495367,11 +510508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -495382,14 +510523,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -495400,11 +510541,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -495415,14 +510556,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -495433,11 +510574,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -495448,11 +510589,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -495463,10 +510604,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -495477,7 +510618,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -495485,7 +510626,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -495496,14 +510637,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -495514,11 +510655,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -495529,10 +510670,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -495543,7 +510684,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -495552,7 +510693,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -495563,7 +510704,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -495574,7 +510715,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -495585,7 +510726,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -495599,7 +510740,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -495610,7 +510751,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -495622,7 +510763,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -495633,7 +510774,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -495646,7 +510787,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -495657,7 +510798,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495668,7 +510809,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -495679,7 +510820,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -495692,7 +510833,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -495703,7 +510844,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495714,7 +510855,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -495725,7 +510866,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -495737,7 +510878,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -495748,7 +510889,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495758,7 +510899,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -495769,11 +510910,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -495784,11 +510925,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -495799,10 +510940,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -495813,7 +510954,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -495822,36 +510998,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495861,36 +511037,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495901,18 +511077,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495922,18 +511098,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -495944,18 +511120,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -495965,143 +511141,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -496111,18 +511287,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -496131,412 +511307,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -496548,18 +511724,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -496568,262 +511744,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -496832,18 +512008,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -496851,388 +512027,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -497245,249 +512421,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
-        let __sym0 = __pop_Variant52(__symbols);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
+        let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        let __nt = super::__action11::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -497500,59 +512691,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__ReturnStmt::ReturnStmtParser;
+pub(crate) use self::__parse__RefType::RefTypeParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Statement {
+mod __parse__ReturnStmt {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -497634,323 +512825,217 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 71, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 2
-        0, -164, -164, -164, -164, 11, -164, -164, -164, -164, -164, 0, 12, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 13, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, 0, 0, 51, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 56, -121, -121, 57, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 63, -121, 0,
         // State 4
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 64, -111, 0, 0, -111, 65, -111, -111, -111, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 15, -166, -166, -166, -166, -166, 0, 16, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 17, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 6
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 7
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 18, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 9
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 12, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 13, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 10
-        87, 0, 0, 19, 0, 20, -82, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 12
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 13
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 16, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 17, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 14
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 103, 0, 0, 0,
+        44, 0, 0, 8, 0, 9, -82, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 15
-        0, 104, -121, -121, 105, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 106, 107, 0, 108, 109, 110, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 111, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        0, 0, 112, -111, 0, 0, -111, 113, -111, -111, -111, 0, 0, -111, 114, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 17
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 18
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 36, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 51, 0, 0, 78, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 19
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, -166, -166, -166, -166, 15, -166, -166, -166, -166, -166, 0, 16, 0, -166, 0, 79, 0, -166, -166, 0, -166, -166, -166, 17, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 20
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 64, -110, 0, 0, -110, 65, -110, -110, -110, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 56, -120, -120, 57, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 58, 59, 0, 60, 61, 62, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 63, -120, 0,
         // State 22
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        44, 0, 0, 8, 0, 9, -84, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 23
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 103, 0, 0, 0,
+        0, 0, 0, 51, 0, 0, -81, 0, 52, 82, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 24
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 51, 0, 0, 0, 0, 52, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 25
-        87, 0, 0, 19, 0, 20, -84, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 26
-        0, 0, 0, 99, 0, 0, -81, 0, 100, 123, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        0, 0, 0, 51, 0, 0, -83, 0, 52, 87, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0,
         // State 27
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 29
-        0, -164, -164, -164, -164, 11, -164, -164, -164, -164, -164, 0, 12, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 13, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, -164, -164, -164, 0,
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        44, 0, 0, 8, 0, 9, 0, 10, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 50,
         // State 32
-        0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 71, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 51, 0, 0, 0, 0, 52, -192, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, -192, 0,
         // State 34
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, 0, 0, 99, 0, 0, 128, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 37
-        0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 38
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 39
-        0, 0, 0, 99, 0, 0, -83, 0, 100, 133, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 40
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 41
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 103, 0, 0, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 42
-        0, 0, 112, -110, 0, 0, -110, 113, -110, -110, -110, 0, 0, -110, 114, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 43
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 44
-        0, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 71, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 140, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 45
-        0, 104, -120, -120, 105, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 106, 107, 0, 108, 109, 110, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 111, -120, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 46
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 47
-        0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 48
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 49
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 50
-        0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 51
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 52
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 53
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 103, 0, 0, 0,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 54
-        0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 55
-        0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 56
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 57
-        87, 0, 0, 19, 0, 20, 0, 21, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 71, 0, 0, 90, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 92,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 58
-        0, 0, 0, 99, 0, 0, 0, 0, 100, -190, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, -190, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 59
-        0, 0, 0, 99, 0, 0, 0, 0, 100, 0, 101, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 61
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 62
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 63
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 64
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 65
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 66
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 67
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 68
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 69
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
         // State 70
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 71
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 72
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 75
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 76
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 77
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 80
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 81
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 82
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 83
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0,
         // State 84
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 85
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 86
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 87
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 91
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 92
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 93
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 94
-        0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 95
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 96
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 98
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 99
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 100
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 101
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 105
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 106
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 107
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 108
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 109
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 110
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 111
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 112
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 113
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 114
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
-        // State 115
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
-        // State 116
-        0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 117
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
-        // State 118
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 119
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
-        // State 120
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 121
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
-        // State 122
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 123
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
-        // State 124
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
-        // State 125
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
-        // State 126
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
-        // State 127
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
-        // State 128
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
-        // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 130
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 131
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 132
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 133
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 145, 0,
-        // State 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 135
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 136
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
-        // State 137
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
-        // State 138
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
-        // State 139
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
-        // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 143
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 144
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 146
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 147
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 149
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 150
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
-        // State 151
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
-        // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 154
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 156
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 157
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 158
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -497959,15 +513044,15 @@
         // State 0
         0,
         // State 1
-        0,
+        -178,
         // State 2
-        0,
+        -177,
         // State 3
-        0,
+        -121,
         // State 4
-        0,
+        -111,
         // State 5
-        0,
+        -166,
         // State 6
         0,
         // State 7
@@ -497983,7 +513068,7 @@
         // State 12
         0,
         // State 13
-        0,
+        -165,
         // State 14
         0,
         // State 15
@@ -497997,9 +513082,9 @@
         // State 19
         0,
         // State 20
-        0,
+        -110,
         // State 21
-        0,
+        -120,
         // State 22
         0,
         // State 23
@@ -498027,33 +513112,33 @@
         // State 34
         0,
         // State 35
-        0,
+        -241,
         // State 36
-        0,
+        -117,
         // State 37
-        0,
+        -119,
         // State 38
-        0,
+        -199,
         // State 39
-        0,
+        -213,
         // State 40
-        0,
+        -112,
         // State 41
-        0,
+        -197,
         // State 42
-        0,
+        -198,
         // State 43
         0,
         // State 44
         0,
         // State 45
-        0,
+        -211,
         // State 46
-        0,
+        -138,
         // State 47
-        0,
+        -210,
         // State 48
-        0,
+        -212,
         // State 49
         0,
         // State 50
@@ -498081,47 +513166,47 @@
         // State 61
         0,
         // State 62
-        -179,
+        0,
         // State 63
-        -177,
+        0,
         // State 64
         0,
         // State 65
         0,
         // State 66
-        0,
+        -169,
         // State 67
-        -239,
+        -116,
         // State 68
-        -178,
+        -114,
         // State 69
         0,
         // State 70
         0,
         // State 71
-        0,
+        -115,
         // State 72
-        0,
+        -118,
         // State 73
-        -181,
+        -170,
         // State 74
-        -182,
-        // State 75
         0,
+        // State 75
+        -167,
         // State 76
-        -180,
+        -113,
         // State 77
-        -183,
+        -196,
         // State 78
         0,
         // State 79
-        0,
+        -200,
         // State 80
-        0,
+        -124,
         // State 81
         0,
         // State 82
-        0,
+        -168,
         // State 83
         0,
         // State 84
@@ -498151,7 +513236,7 @@
         // State 96
         0,
         // State 97
-        -142,
+        0,
         // State 98
         0,
         // State 99
@@ -498168,229 +513253,81 @@
         0,
         // State 105
         0,
-        // State 106
-        0,
-        // State 107
-        0,
-        // State 108
-        0,
-        // State 109
-        0,
-        // State 110
-        0,
-        // State 111
-        0,
-        // State 112
-        0,
-        // State 113
-        0,
-        // State 114
-        0,
-        // State 115
-        0,
-        // State 116
-        0,
-        // State 117
-        0,
-        // State 118
-        0,
-        // State 119
-        -212,
-        // State 120
-        0,
-        // State 121
-        0,
-        // State 122
-        0,
-        // State 123
-        0,
-        // State 124
-        0,
-        // State 125
-        0,
-        // State 126
-        0,
-        // State 127
-        0,
-        // State 128
-        0,
-        // State 129
-        0,
-        // State 130
-        0,
-        // State 131
-        0,
-        // State 132
-        0,
-        // State 133
-        0,
-        // State 134
-        0,
-        // State 135
-        0,
-        // State 136
-        -128,
-        // State 137
-        -141,
-        // State 138
-        0,
-        // State 139
-        -80,
-        // State 140
-        0,
-        // State 141
-        0,
-        // State 142
-        0,
-        // State 143
-        0,
-        // State 144
-        0,
-        // State 145
-        0,
-        // State 146
-        0,
-        // State 147
-        0,
-        // State 148
-        0,
-        // State 149
-        0,
-        // State 150
-        0,
-        // State 151
-        -129,
-        // State 152
-        0,
-        // State 153
-        0,
-        // State 154
-        0,
-        // State 155
-        0,
-        // State 156
-        0,
-        // State 157
-        0,
-        // State 158
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 1,
-            15 => 25,
-            30 => 48,
-            33 => 54,
-            36 => 60,
-            37 => 33,
-            38 => 34,
-            39 => 31,
-            40 => match state {
-                23 => 119,
-                41 => 136,
-                43 => 137,
-                53 => 151,
-                _ => 97,
-            },
-            41 => 94,
-            45 => 133,
+            15 => 22,
+            30 => 28,
+            33 => 29,
+            37 => 11,
+            38 => 12,
+            39 => 10,
+            41 => 74,
+            45 => 83,
             46 => match state {
-                55 => 155,
-                _ => 146,
+                32 => 102,
+                34 => 104,
+                _ => 87,
             },
             49 => match state {
-                6 => 22,
-                7 => 23,
-                10 => 26,
-                12 => 27,
-                13 => 28,
-                19 => 36,
-                24 => 38,
-                25 => 39,
-                30 => 41,
-                49 => 53,
-                51 => 56,
-                52 => 58,
-                57 => 59,
-                _ => 14,
+                8 => 18,
+                14 => 23,
+                16 => 24,
+                22 => 26,
+                31 => 33,
+                _ => 2,
             },
-            50 => 79,
+            50 => 36,
             51 => match state {
-                17 => 114,
-                18 => 115,
-                20 => 117,
-                33 => 125,
-                35 => 126,
-                _ => 80,
+                6 => 67,
+                7 => 68,
+                9 => 71,
+                11 => 72,
+                17 => 76,
+                _ => 37,
             },
             52 => match state {
-                34 => 45,
-                _ => 15,
+                12 => 21,
+                _ => 3,
             },
             53 => match state {
-                31 => 42,
-                _ => 16,
-            },
-            55 => match state {
-                0 | 32 | 44 => 61,
-                _ => 81,
+                10 => 20,
+                _ => 4,
             },
-            58 => 62,
+            55 => 38,
             60 => match state {
-                1 => 8,
-                13 | 19 | 24 | 51..=52 | 57 => 29,
-                3 => 78,
-                5 => 92,
-                11 => 95,
-                21 => 118,
-                37 | 47 | 50 | 54..=55 => 129,
-                40 | 48 => 134,
-                46 => 140,
-                _ => 2,
-            },
-            62 => 63,
-            64 => 64,
-            68 => 44,
-            71 => match state {
-                0 | 32 | 44 => 65,
-                1 => 71,
-                _ => 82,
-            },
-            72 => match state {
-                9 => 93,
-                _ => 75,
-            },
-            73 => 9,
-            75 => 46,
-            77 => 66,
-            78 => match state {
-                32 => 124,
-                44 => 138,
-                _ => 67,
+                8 | 31 => 19,
+                15 => 75,
+                25 | 28 => 84,
+                27 | 29 | 32 | 34 => 88,
+                30 => 96,
+                _ => 5,
             },
-            82 => match state {
-                19 => 116,
-                24 => 120,
-                51 => 148,
-                52 => 150,
-                57 => 156,
-                _ => 96,
+            62 => 69,
+            72 => 39,
+            73 => match state {
+                13 => 73,
+                _ => 66,
             },
+            74 => 13,
+            76 => 30,
+            78 => 35,
             83 => match state {
-                48 => 143,
-                _ => 135,
+                31 => 100,
+                _ => 70,
             },
-            85 => 83,
-            86 => 84,
-            87 => match state {
-                37 => 130,
-                47 => 142,
-                54 => 152,
-                _ => 147,
+            84 => match state {
+                28 => 91,
+                _ => 85,
             },
-            89 => 17,
-            90 => 85,
-            91 => 68,
+            86 => 40,
+            87 => 41,
+            88 => match state {
+                29 => 94,
+                _ => 89,
+            },
+            90 => 6,
+            91 => 42,
             _ => 0,
         }
     }
@@ -498485,7 +513422,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Statement;
+        type Success = ast::ReturnStmt;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -499506,19 +514443,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -499530,37 +514467,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -499572,7 +514509,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -499584,7 +514521,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -499602,43 +514539,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -499656,19 +514593,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -499680,7 +514617,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -499692,7 +514629,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -499704,25 +514641,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -499735,108 +514672,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -499848,43 +514785,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -499896,14 +514833,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -499921,248 +514858,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => __state_machine::SimulatedReduce::Accept,
             239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 119,
+                    nonterminal_produced: 118,
                 }
             }
-            240 => {
+            240 => __state_machine::SimulatedReduce::Accept,
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StatementParser {
+    pub(crate) struct ReturnStmtParser {
         _priv: (),
     }
 
-    impl StatementParser {
-        pub(crate) fn new() -> StatementParser {
-            StatementParser {
+    impl ReturnStmtParser {
+        pub(crate) fn new() -> ReturnStmtParser {
+            ReturnStmtParser {
                 _priv: (),
             }
         }
@@ -500174,7 +515129,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Statement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::ReturnStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -500225,7 +515180,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Statement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::ReturnStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -500943,18 +515898,18 @@
                 __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             238 => {
-                // __Statement = Statement => ActionFn(6);
-                let __sym0 = __pop_Variant55(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action6::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             239 => {
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             240 => {
-                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __ReturnStmt = ReturnStmt => ActionFn(11);
+                let __sym0 = __pop_Variant54(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action11::<>(__sym0);
+                return Some(Ok(__nt));
             }
             241 => {
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -500980,6 +515935,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -501630,10 +516594,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -501644,11 +516608,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -501659,11 +516623,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -501674,13 +516638,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -501691,11 +516655,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -501706,10 +516670,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -501720,11 +516684,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -501735,10 +516699,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -501749,11 +516713,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -501764,10 +516728,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -501778,13 +516742,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -501795,13 +516759,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -501812,10 +516776,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -501826,14 +516790,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -501844,14 +516808,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -501862,10 +516826,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -501876,13 +516840,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -501893,13 +516857,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -501910,10 +516874,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -501924,14 +516888,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -501942,14 +516906,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -501960,10 +516924,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -501974,13 +516938,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -501991,10 +516955,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -502005,11 +516969,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -502020,13 +516984,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -502037,14 +517001,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -502055,13 +517019,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -502072,10 +517036,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -502086,11 +517050,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -502101,13 +517065,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -502118,14 +517082,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -502136,13 +517100,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -502153,10 +517117,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -502167,11 +517131,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -502182,13 +517146,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -502199,14 +517163,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -502217,13 +517181,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -502234,10 +517198,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -502248,11 +517212,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -502263,13 +517227,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -502280,14 +517244,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -502298,13 +517262,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -502315,10 +517279,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -502329,11 +517293,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -502344,13 +517308,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -502361,14 +517325,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -502379,13 +517343,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -502396,10 +517360,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -502410,11 +517374,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -502425,13 +517389,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -502442,14 +517406,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -502460,13 +517424,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -502477,10 +517441,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -502491,11 +517455,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -502506,13 +517470,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -502523,14 +517487,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -502541,10 +517505,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -502555,10 +517519,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -502569,14 +517533,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -502587,7 +517551,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -502595,7 +517559,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -502606,14 +517570,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -502624,7 +517588,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -502632,7 +517596,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -502643,11 +517607,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502658,11 +517622,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502673,11 +517637,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502688,11 +517652,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502703,11 +517667,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502718,11 +517682,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502733,11 +517697,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502748,11 +517712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -502763,11 +517727,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -502778,11 +517742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -502793,11 +517757,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -502808,11 +517772,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502823,11 +517787,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502838,11 +517802,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502853,11 +517817,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502868,11 +517832,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -502883,14 +517847,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -502901,11 +517865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -502916,10 +517880,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -502930,13 +517894,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -502947,11 +517911,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -502962,11 +517926,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -502977,10 +517941,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -502991,13 +517955,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -503008,11 +517972,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -503023,11 +517987,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -503038,10 +518002,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -503052,13 +518016,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -503069,11 +518033,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -503084,11 +518048,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -503099,10 +518063,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -503113,13 +518077,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -503130,11 +518094,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -503145,11 +518109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -503160,10 +518124,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -503174,13 +518138,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -503191,11 +518155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -503206,11 +518170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -503221,10 +518185,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -503235,13 +518199,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -503252,11 +518216,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -503267,7 +518231,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -503278,7 +518242,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -503289,11 +518253,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -503304,10 +518268,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -503318,13 +518282,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -503335,11 +518299,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -503350,14 +518314,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -503368,11 +518332,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -503383,11 +518347,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -503398,14 +518362,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -503416,13 +518380,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -503433,13 +518397,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -503450,13 +518414,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -503467,11 +518431,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -503482,14 +518446,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -503500,11 +518464,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -503515,14 +518479,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -503533,11 +518497,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -503548,11 +518512,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -503563,10 +518527,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -503577,7 +518541,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -503585,7 +518549,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -503596,14 +518560,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -503614,11 +518578,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -503629,10 +518593,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -503643,7 +518607,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -503652,7 +518616,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -503663,7 +518627,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -503674,7 +518638,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -503685,7 +518649,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -503699,7 +518663,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -503710,7 +518674,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -503722,7 +518686,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -503733,7 +518697,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -503746,7 +518710,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -503757,7 +518721,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -503768,7 +518732,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -503779,7 +518743,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -503792,7 +518756,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -503803,7 +518767,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -503814,7 +518778,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -503825,7 +518789,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -503837,7 +518801,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -503848,7 +518812,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -503858,7 +518822,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -503869,11 +518833,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -503884,11 +518848,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -503899,10 +518863,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -503913,7 +518877,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -503922,36 +518921,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -503961,36 +518960,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -504001,18 +519000,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -504022,18 +519021,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -504044,18 +519043,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -504065,143 +519064,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -504211,18 +519210,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -504231,412 +519230,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -504648,18 +519647,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -504668,262 +519667,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -504932,18 +519931,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -504951,388 +519950,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505345,249 +520344,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
-        let __sym0 = __pop_Variant54(__symbols);
+        // __Statement = Statement => ActionFn(7);
+        let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        let __nt = super::__action7::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -505600,59 +520614,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__Statement::StatementParser;
+pub(crate) use self::__parse__ReturnStmt::ReturnStmtParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Struct {
+mod __parse__Statement {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -505734,81 +520748,333 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 72, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 11, -166, -166, -166, -166, -166, 0, 12, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 13, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 7
-        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 8
-        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 12, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 13, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
         // State 10
-        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, -82, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 105, 0, 0, 0,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0,
+        0, 106, -121, -121, 107, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 108, 109, 0, 110, 111, 112, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 113, -121, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 114, -111, 0, 0, -111, 115, -111, -111, -111, 0, 0, -111, 116, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 36, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 19
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 20
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 105, 0, 0, 0,
         // State 24
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, -84, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        0, 0, 0, 101, 0, 0, -81, 0, 102, 125, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
         // State 27
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
         // State 29
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 11, -166, -166, -166, -166, -166, 0, 12, 0, -166, 0, 127, -166, -166, -166, 0, -166, -166, -166, 13, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 30
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 32
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -186, 0,
+        0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 72, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 0, 0,
         // State 33
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 34
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
         // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 101, 0, 0, 131, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
         // State 37
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 38
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
+        // State 39
+        0, 0, 0, 101, 0, 0, -83, 0, 102, 136, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
+        // State 40
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        // State 41
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 105, 0, 0, 0,
+        // State 42
+        0, 0, 114, -110, 0, 0, -110, 115, -110, -110, -110, 0, 0, -110, 116, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        // State 43
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+        // State 44
+        0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 72, 5, 0, 0, 6, 0, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 143, 0,
+        // State 45
+        0, 106, -120, -120, 107, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 108, 109, 0, 110, 111, 112, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 113, -120, 0,
+        // State 46
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 47
+        0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 48
+        0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 49
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 50
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
+        // State 51
+        0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 52
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
+        // State 53
+        0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 54
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
+        // State 55
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 105, 0, 0, 0,
+        // State 56
+        0, 0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 57
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
+        // State 58
+        88, 0, 0, 19, 0, 20, 0, 21, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 72, 0, 0, 91, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 93,
+        // State 59
+        0, 0, 0, 101, 0, 0, 0, 0, 102, -192, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, -192, 0,
+        // State 60
+        0, 0, 0, 101, 0, 0, 0, 0, 102, 0, 103, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0,
+        // State 61
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 62
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 63
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        // State 64
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        // State 65
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 66
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 67
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 68
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 69
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        // State 70
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 71
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        // State 72
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 73
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 74
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        // State 75
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        // State 76
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
+        // State 77
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        // State 78
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        // State 79
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 80
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        // State 81
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        // State 82
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
+        // State 83
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
+        // State 84
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        // State 85
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        // State 86
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        // State 87
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
+        // State 88
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 89
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        // State 90
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        // State 91
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
+        // State 92
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 94
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
+        // State 95
+        0, 0, 0, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 100
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        // State 101
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        // State 102
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        // State 103
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        // State 104
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        // State 105
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        // State 106
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 107
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 108
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        // State 109
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        // State 110
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 111
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 112
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 113
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 114
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 115
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 116
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        // State 117
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        // State 118
+        0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 119
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        // State 120
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 121
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
+        // State 122
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 123
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        // State 124
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 125
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        // State 126
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 127
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
+        // State 128
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        // State 129
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        // State 130
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        // State 131
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
+        // State 132
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 133
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 134
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 135
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 136
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0,
+        // State 137
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 138
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 139
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        // State 140
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
+        // State 141
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
+        // State 142
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
+        // State 143
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 144
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 145
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 146
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 147
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 148
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 149
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 150
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 151
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 152
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 153
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 154
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 155
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 156
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 157
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 158
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 159
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 160
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 161
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 162
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -505837,7 +521103,7 @@
         // State 10
         0,
         // State 11
-        -240,
+        0,
         // State 12
         0,
         // State 13
@@ -505869,7 +521135,7 @@
         // State 26
         0,
         // State 27
-        -185,
+        0,
         // State 28
         0,
         // State 29
@@ -505887,40 +521153,380 @@
         // State 35
         0,
         // State 36
-        -184,
+        0,
         // State 37
         0,
+        // State 38
+        0,
+        // State 39
+        0,
+        // State 40
+        0,
+        // State 41
+        0,
+        // State 42
+        0,
+        // State 43
+        0,
+        // State 44
+        0,
+        // State 45
+        0,
+        // State 46
+        0,
+        // State 47
+        0,
+        // State 48
+        0,
+        // State 49
+        0,
+        // State 50
+        0,
+        // State 51
+        0,
+        // State 52
+        0,
+        // State 53
+        0,
+        // State 54
+        0,
+        // State 55
+        0,
+        // State 56
+        0,
+        // State 57
+        0,
+        // State 58
+        0,
+        // State 59
+        0,
+        // State 60
+        0,
+        // State 61
+        0,
+        // State 62
+        0,
+        // State 63
+        -181,
+        // State 64
+        -179,
+        // State 65
+        0,
+        // State 66
+        0,
+        // State 67
+        0,
+        // State 68
+        -242,
+        // State 69
+        -180,
+        // State 70
+        0,
+        // State 71
+        0,
+        // State 72
+        0,
+        // State 73
+        0,
+        // State 74
+        -183,
+        // State 75
+        -184,
+        // State 76
+        0,
+        // State 77
+        -182,
+        // State 78
+        -185,
+        // State 79
+        0,
+        // State 80
+        0,
+        // State 81
+        0,
+        // State 82
+        0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        -144,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
+        // State 105
+        0,
+        // State 106
+        0,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
+        // State 111
+        0,
+        // State 112
+        0,
+        // State 113
+        0,
+        // State 114
+        0,
+        // State 115
+        0,
+        // State 116
+        0,
+        // State 117
+        0,
+        // State 118
+        0,
+        // State 119
+        0,
+        // State 120
+        0,
+        // State 121
+        -214,
+        // State 122
+        0,
+        // State 123
+        0,
+        // State 124
+        0,
+        // State 125
+        0,
+        // State 126
+        0,
+        // State 127
+        0,
+        // State 128
+        0,
+        // State 129
+        0,
+        // State 130
+        0,
+        // State 131
+        0,
+        // State 132
+        0,
+        // State 133
+        0,
+        // State 134
+        0,
+        // State 135
+        0,
+        // State 136
+        0,
+        // State 137
+        0,
+        // State 138
+        0,
+        // State 139
+        -128,
+        // State 140
+        -143,
+        // State 141
+        0,
+        // State 142
+        -80,
+        // State 143
+        0,
+        // State 144
+        0,
+        // State 145
+        0,
+        // State 146
+        0,
+        // State 147
+        0,
+        // State 148
+        0,
+        // State 149
+        0,
+        // State 150
+        0,
+        // State 151
+        0,
+        // State 152
+        0,
+        // State 153
+        0,
+        // State 154
+        0,
+        // State 155
+        0,
+        // State 156
+        0,
+        // State 157
+        0,
+        // State 158
+        -129,
+        // State 159
+        0,
+        // State 160
+        0,
+        // State 161
+        0,
+        // State 162
+        0,
+        // State 163
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            27 => 6,
-            33 => 4,
-            44 => match state {
-                9 => 33,
-                _ => 18,
+            1 => 1,
+            15 => 25,
+            30 => 49,
+            33 => 53,
+            36 => 61,
+            37 => 33,
+            38 => 34,
+            39 => 31,
+            40 => match state {
+                23 => 121,
+                41 => 139,
+                43 => 140,
+                55 => 158,
+                _ => 99,
             },
+            41 => 95,
+            45 => 136,
             46 => match state {
-                7 => 30,
-                10 => 35,
+                51 => 151,
+                56 => 160,
+                _ => 146,
+            },
+            49 => match state {
+                6 => 22,
+                7 => 23,
+                10 => 26,
+                12 => 27,
+                13 => 28,
+                19 => 36,
+                24 => 38,
+                25 => 39,
+                30 => 41,
+                50 => 55,
+                52 => 57,
+                54 => 59,
+                58 => 60,
                 _ => 14,
             },
-            60 => match state {
-                1 => 12,
-                3 | 6 | 9 => 19,
-                5 => 23,
-                _ => 15,
+            50 => 80,
+            51 => match state {
+                17 => 116,
+                18 => 117,
+                20 => 119,
+                33 => 128,
+                35 => 129,
+                _ => 81,
             },
-            75 => 5,
-            79 => 11,
-            80 => match state {
-                6 => 26,
-                _ => 20,
+            52 => match state {
+                34 => 45,
+                _ => 15,
             },
-            87 => match state {
-                4 => 21,
-                8 => 32,
+            53 => match state {
+                31 => 42,
                 _ => 16,
             },
+            55 => match state {
+                0 | 32 | 44 => 62,
+                _ => 82,
+            },
+            58 => 63,
+            60 => match state {
+                1 => 8,
+                13 | 19 | 24 | 52 | 54 | 58 => 29,
+                3 => 79,
+                5 => 93,
+                11 => 96,
+                21 => 120,
+                37 | 47..=48 | 51 | 53 | 56 => 132,
+                40 | 49 => 137,
+                46 => 143,
+                _ => 2,
+            },
+            62 => 97,
+            63 => 64,
+            65 => 65,
+            69 => 44,
+            72 => match state {
+                0 | 32 | 44 => 66,
+                1 => 72,
+                _ => 83,
+            },
+            73 => match state {
+                9 => 94,
+                _ => 76,
+            },
+            74 => 9,
+            76 => 46,
+            78 => 67,
+            79 => match state {
+                32 => 127,
+                44 => 141,
+                _ => 68,
+            },
+            83 => match state {
+                19 => 118,
+                24 => 122,
+                52 => 152,
+                54 => 157,
+                58 => 161,
+                _ => 98,
+            },
+            84 => match state {
+                49 => 148,
+                _ => 138,
+            },
+            86 => 84,
+            87 => 85,
+            88 => match state {
+                37 => 133,
+                47 => 145,
+                53 => 153,
+                _ => 147,
+            },
+            90 => 17,
+            91 => 86,
+            92 => 69,
             _ => 0,
         }
     }
@@ -506015,7 +521621,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Struct;
+        type Success = ast::Statement;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -507036,19 +522642,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -507060,37 +522666,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -507102,7 +522708,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -507114,7 +522720,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -507132,43 +522738,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -507186,19 +522792,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -507210,7 +522816,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -507222,7 +522828,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -507234,25 +522840,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -507265,108 +522871,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -507378,43 +522984,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -507426,14 +523032,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -507451,248 +523057,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => __state_machine::SimulatedReduce::Accept,
             240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 120,
+                    nonterminal_produced: 119,
                 }
             }
-            241 => {
+            241 => __state_machine::SimulatedReduce::Accept,
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructParser {
+    pub(crate) struct StatementParser {
         _priv: (),
     }
 
-    impl StructParser {
-        pub(crate) fn new() -> StructParser {
-            StructParser {
+    impl StatementParser {
+        pub(crate) fn new() -> StatementParser {
+            StatementParser {
                 _priv: (),
             }
         }
@@ -507704,7 +523328,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Struct, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Statement, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -507755,7 +523379,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Struct,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Statement,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -508476,18 +524100,18 @@
                 __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             239 => {
-                // __Struct = Struct => ActionFn(33);
-                let __sym0 = __pop_Variant56(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action33::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             240 => {
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             241 => {
-                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Statement = Statement => ActionFn(7);
+                let __sym0 = __pop_Variant55(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action7::<>(__sym0);
+                return Some(Ok(__nt));
             }
             242 => {
                 __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -508510,6 +524134,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -509160,10 +524793,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -509174,11 +524807,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -509189,11 +524822,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -509204,13 +524837,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -509221,11 +524854,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -509236,10 +524869,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -509250,11 +524883,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -509265,10 +524898,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -509279,11 +524912,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -509294,10 +524927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -509308,13 +524941,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -509325,13 +524958,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -509342,10 +524975,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -509356,14 +524989,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -509374,14 +525007,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -509392,10 +525025,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -509406,13 +525039,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -509423,13 +525056,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -509440,10 +525073,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -509454,14 +525087,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -509472,14 +525105,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -509490,10 +525123,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -509504,13 +525137,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -509521,10 +525154,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -509535,11 +525168,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -509550,13 +525183,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -509567,14 +525200,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -509585,13 +525218,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -509602,10 +525235,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -509616,11 +525249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -509631,13 +525264,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -509648,14 +525281,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -509666,13 +525299,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -509683,10 +525316,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -509697,11 +525330,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -509712,13 +525345,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -509729,14 +525362,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -509747,13 +525380,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -509764,10 +525397,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -509778,11 +525411,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -509793,13 +525426,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -509810,14 +525443,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -509828,13 +525461,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -509845,10 +525478,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -509859,11 +525492,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -509874,13 +525507,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -509891,14 +525524,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -509909,13 +525542,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -509926,10 +525559,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -509940,11 +525573,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -509955,13 +525588,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -509972,14 +525605,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -509990,13 +525623,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -510007,10 +525640,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -510021,11 +525654,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -510036,13 +525669,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -510053,14 +525686,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -510071,10 +525704,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -510085,10 +525718,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -510099,14 +525732,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -510117,7 +525750,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -510125,7 +525758,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -510136,14 +525769,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -510154,7 +525787,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -510162,7 +525795,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -510173,11 +525806,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510188,11 +525821,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510203,11 +525836,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510218,11 +525851,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510233,11 +525866,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510248,11 +525881,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510263,11 +525896,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510278,11 +525911,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -510293,11 +525926,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -510308,11 +525941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -510323,11 +525956,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -510338,11 +525971,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510353,11 +525986,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510368,11 +526001,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510383,11 +526016,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510398,11 +526031,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -510413,14 +526046,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -510431,11 +526064,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -510446,10 +526079,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -510460,13 +526093,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -510477,11 +526110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -510492,11 +526125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -510507,10 +526140,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -510521,13 +526154,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -510538,11 +526171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -510553,11 +526186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -510568,10 +526201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -510582,13 +526215,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -510599,11 +526232,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -510614,11 +526247,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -510629,10 +526262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -510643,13 +526276,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -510660,11 +526293,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -510675,11 +526308,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -510690,10 +526323,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -510704,13 +526337,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -510721,11 +526354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -510736,11 +526369,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -510751,10 +526384,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -510765,13 +526398,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -510782,11 +526415,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -510797,7 +526430,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -510808,7 +526441,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -510819,11 +526452,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -510834,10 +526467,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -510848,13 +526481,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -510865,11 +526498,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -510880,14 +526513,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -510898,11 +526531,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -510913,11 +526546,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -510928,14 +526561,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -510946,13 +526579,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -510963,13 +526596,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -510980,13 +526613,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -510997,11 +526630,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -511012,14 +526645,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -511030,11 +526663,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -511045,14 +526678,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -511063,11 +526696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -511078,11 +526711,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -511093,10 +526726,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -511107,7 +526740,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -511115,7 +526748,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -511126,14 +526759,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -511144,11 +526777,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -511159,10 +526792,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -511173,7 +526806,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -511182,7 +526815,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -511193,7 +526826,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -511204,7 +526837,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -511215,7 +526848,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -511229,7 +526862,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -511240,7 +526873,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -511252,7 +526885,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -511263,7 +526896,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -511276,7 +526909,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -511287,7 +526920,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511298,7 +526931,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -511309,7 +526942,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -511322,7 +526955,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -511333,7 +526966,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511344,7 +526977,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -511355,7 +526988,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -511367,7 +527000,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -511378,7 +527011,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511388,7 +527021,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -511399,11 +527032,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -511414,11 +527047,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -511429,10 +527062,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -511443,7 +527076,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -511452,36 +527120,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511491,36 +527159,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511531,18 +527199,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511552,18 +527220,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -511574,18 +527242,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -511595,143 +527263,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -511741,18 +527409,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -511761,412 +527429,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -512178,18 +527846,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -512198,262 +527866,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -512462,18 +528130,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -512481,388 +528149,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -512875,249 +528543,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
-        let __sym0 = __pop_Variant55(__symbols);
+        // __Struct = Struct => ActionFn(34);
+        let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        let __nt = super::__action34::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -513130,59 +528813,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__Struct::StructParser;
+pub(crate) use self::__parse__Statement::StatementParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__StructField {
+mod __parse__Struct {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -513264,49 +528947,81 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 4
-        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -96, 0,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -94, 0,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0,
         // State 19
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -93, 0,
         // State 21
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 22
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
+        // State 23
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0,
+        // State 24
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 25
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 26
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -95, 0,
+        // State 27
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 28
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0,
+        // State 29
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 30
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 31
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0,
+        // State 32
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -188, 0,
+        // State 33
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
+        // State 34
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0,
+        // State 35
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 36
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 37
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -513327,17 +529042,17 @@
         // State 6
         0,
         // State 7
-        -241,
+        0,
         // State 8
-        -138,
+        0,
         // State 9
-        -200,
+        0,
         // State 10
-        -186,
-        // State 11
         0,
+        // State 11
+        -243,
         // State 12
-        -199,
+        0,
         // State 13
         0,
         // State 14
@@ -513347,7 +529062,7 @@
         // State 16
         0,
         // State 17
-        -202,
+        0,
         // State 18
         0,
         // State 19
@@ -513355,27 +529070,70 @@
         // State 20
         0,
         // State 21
-        -201,
+        0,
+        // State 22
+        0,
+        // State 23
+        0,
+        // State 24
+        0,
+        // State 25
+        0,
+        // State 26
+        0,
+        // State 27
+        -187,
+        // State 28
+        0,
+        // State 29
+        0,
+        // State 30
+        0,
+        // State 31
+        0,
+        // State 32
+        0,
+        // State 33
+        0,
+        // State 34
+        0,
+        // State 35
+        0,
+        // State 36
+        -186,
+        // State 37
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
+            27 => 6,
             33 => 4,
+            44 => match state {
+                9 => 33,
+                _ => 18,
+            },
             46 => match state {
-                5 => 19,
+                7 => 30,
+                10 => 35,
                 _ => 14,
             },
             60 => match state {
-                0 => 6,
-                2 => 12,
-                _ => 9,
-            },
-            75 => 2,
-            80 => 7,
-            87 => match state {
-                1 => 10,
-                4 => 16,
+                1 => 12,
+                3 | 6 | 9 => 19,
+                5 => 23,
                 _ => 15,
             },
+            76 => 5,
+            80 => 11,
+            81 => match state {
+                6 => 26,
+                _ => 20,
+            },
+            88 => match state {
+                4 => 21,
+                8 => 32,
+                _ => 16,
+            },
             _ => 0,
         }
     }
@@ -513470,7 +529228,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::StructField;
+        type Success = ast::Struct;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -514491,19 +530249,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -514515,37 +530273,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -514557,7 +530315,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -514569,7 +530327,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -514587,43 +530345,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -514641,19 +530399,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -514665,7 +530423,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -514677,7 +530435,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -514689,25 +530447,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -514720,108 +530478,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -514833,43 +530591,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -514881,14 +530639,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -514906,248 +530664,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => __state_machine::SimulatedReduce::Accept,
             241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 121,
+                    nonterminal_produced: 120,
                 }
             }
-            242 => {
+            242 => __state_machine::SimulatedReduce::Accept,
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructFieldParser {
+    pub(crate) struct StructParser {
         _priv: (),
     }
 
-    impl StructFieldParser {
-        pub(crate) fn new() -> StructFieldParser {
-            StructFieldParser {
+    impl StructParser {
+        pub(crate) fn new() -> StructParser {
+            StructParser {
                 _priv: (),
             }
         }
@@ -515159,7 +530935,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::StructField, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Struct, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -515210,7 +530986,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::StructField,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Struct,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -515934,18 +531710,18 @@
                 __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             240 => {
-                // __StructField = StructField => ActionFn(32);
-                let __sym0 = __pop_Variant20(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action32::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             241 => {
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             242 => {
-                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Struct = Struct => ActionFn(34);
+                let __sym0 = __pop_Variant56(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action34::<>(__sym0);
+                return Some(Ok(__nt));
             }
             243 => {
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -515965,6 +531741,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -516615,10 +532400,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -516629,11 +532414,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -516644,11 +532429,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -516659,13 +532444,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -516676,11 +532461,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -516691,10 +532476,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -516705,11 +532490,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -516720,10 +532505,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -516734,11 +532519,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -516749,10 +532534,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -516763,13 +532548,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -516780,13 +532565,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -516797,10 +532582,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -516811,14 +532596,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -516829,14 +532614,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -516847,10 +532632,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -516861,13 +532646,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -516878,13 +532663,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -516895,10 +532680,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -516909,14 +532694,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -516927,14 +532712,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -516945,10 +532730,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -516959,13 +532744,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -516976,10 +532761,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -516990,11 +532775,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -517005,13 +532790,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -517022,14 +532807,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -517040,13 +532825,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -517057,10 +532842,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -517071,11 +532856,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -517086,13 +532871,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -517103,14 +532888,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -517121,13 +532906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -517138,10 +532923,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -517152,11 +532937,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -517167,13 +532952,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -517184,14 +532969,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -517202,13 +532987,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -517219,10 +533004,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -517233,11 +533018,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -517248,13 +533033,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -517265,14 +533050,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -517283,13 +533068,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -517300,10 +533085,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -517314,11 +533099,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -517329,13 +533114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -517346,14 +533131,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -517364,13 +533149,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -517381,10 +533166,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -517395,11 +533180,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -517410,13 +533195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -517427,14 +533212,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -517445,13 +533230,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -517462,10 +533247,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -517476,11 +533261,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -517491,13 +533276,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -517508,14 +533293,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -517526,10 +533311,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -517540,10 +533325,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -517554,14 +533339,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -517572,7 +533357,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -517580,7 +533365,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -517591,14 +533376,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -517609,7 +533394,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -517617,7 +533402,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -517628,11 +533413,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517643,11 +533428,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517658,11 +533443,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517673,11 +533458,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517688,11 +533473,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517703,11 +533488,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517718,11 +533503,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517733,11 +533518,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -517748,11 +533533,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -517763,11 +533548,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -517778,11 +533563,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -517793,11 +533578,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -517808,11 +533593,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -517823,11 +533608,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -517838,11 +533623,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -517853,11 +533638,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -517868,14 +533653,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -517886,11 +533671,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -517901,10 +533686,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -517915,13 +533700,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -517932,11 +533717,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -517947,11 +533732,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -517962,10 +533747,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -517976,13 +533761,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -517993,11 +533778,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -518008,11 +533793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -518023,10 +533808,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -518037,13 +533822,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -518054,11 +533839,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -518069,11 +533854,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -518084,10 +533869,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -518098,13 +533883,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -518115,11 +533900,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -518130,11 +533915,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -518145,10 +533930,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -518159,13 +533944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -518176,11 +533961,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -518191,11 +533976,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -518206,10 +533991,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -518220,13 +534005,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -518237,11 +534022,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -518252,7 +534037,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -518263,7 +534048,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -518274,11 +534059,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -518289,10 +534074,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -518303,13 +534088,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -518320,11 +534105,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -518335,14 +534120,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -518353,11 +534138,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -518368,11 +534153,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -518383,14 +534168,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -518401,13 +534186,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -518418,13 +534203,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -518435,13 +534220,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -518452,11 +534237,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -518467,14 +534252,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -518485,11 +534270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -518500,14 +534285,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -518518,11 +534303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -518533,11 +534318,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -518548,10 +534333,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -518562,7 +534347,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -518570,7 +534355,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -518581,14 +534366,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -518599,11 +534384,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -518614,10 +534399,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -518628,7 +534413,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -518637,7 +534422,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -518648,7 +534433,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -518659,7 +534444,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -518670,7 +534455,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -518684,7 +534469,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -518695,7 +534480,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -518707,7 +534492,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -518718,7 +534503,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -518731,7 +534516,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -518742,7 +534527,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -518753,7 +534538,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -518764,7 +534549,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -518777,7 +534562,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -518788,7 +534573,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -518799,7 +534584,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -518810,7 +534595,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -518822,7 +534607,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -518833,7 +534618,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -518843,7 +534628,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -518854,11 +534639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -518869,11 +534654,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -518884,10 +534669,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -518898,7 +534683,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -518907,36 +534727,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -518946,36 +534766,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -518986,18 +534806,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -519007,18 +534827,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -519029,18 +534849,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -519050,143 +534870,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -519196,18 +535016,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -519216,412 +535036,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -519633,18 +535453,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -519653,262 +535473,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -519917,18 +535737,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -519936,388 +535756,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520330,249 +536150,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
-        let __sym0 = __pop_Variant56(__symbols);
+        // __StructField = StructField => ActionFn(33);
+        let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action33::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -520585,59 +536420,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__StructField::StructFieldParser;
+pub(crate) use self::__parse__Struct::StructParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__StructInitExpr {
+mod __parse__StructField {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -520719,173 +536554,49 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 0, 53, 0, 0, 0, 0, 54, -190, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -190, 0,
+        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, 58, -121, -121, 59, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 60, 61, 0, 62, 63, 64, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 65, -121, 0,
+        0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 66, -111, 0, 0, -111, 67, -111, -111, -111, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 7
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 18, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 19, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, -138, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 9
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 21, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 10
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 11
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 12
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 13
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 14
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 15
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 18, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 19, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        47, 0, 0, 10, 0, 11, -82, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 18
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 19
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 18, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 19, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 20
-        47, 0, 0, 10, 0, 11, 0, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 21
-        0, 0, 0, 53, 0, 0, 79, 0, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
-        // State 22
-        0, 0, 66, -110, 0, 0, -110, 67, -110, -110, -110, 0, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
-        // State 23
-        0, 58, -120, -120, 59, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 60, 61, 0, 62, 63, 64, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 65, -120, 0,
-        // State 24
-        47, 0, 0, 10, 0, 11, -84, 12, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 31, 0, 0, 50, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 52,
-        // State 25
-        0, 0, 0, 53, 0, 0, -81, 0, 54, 82, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
-        // State 26
-        0, 0, 0, 53, 0, 0, 0, 0, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
-        // State 27
-        0, 0, 0, 53, 0, 0, -83, 0, 54, 84, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0,
-        // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
-        // State 29
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 30
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
-        // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0,
-        // State 32
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 33
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 34
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 35
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 37
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 38
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
-        // State 39
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
-        // State 40
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
-        // State 41
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
-        // State 42
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
-        // State 43
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
-        // State 44
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
-        // State 45
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
-        // State 46
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
-        // State 47
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
-        // State 48
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
-        // State 49
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
-        // State 50
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
-        // State 51
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
-        // State 52
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
-        // State 53
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
-        // State 54
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
-        // State 55
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
-        // State 56
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
-        // State 57
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
-        // State 58
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
-        // State 59
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 60
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 61
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 62
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 63
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 64
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 65
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 66
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 67
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 68
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
-        // State 69
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
-        // State 70
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
-        // State 71
-        0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 72
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
-        // State 73
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
-        // State 74
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
-        // State 75
-        0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 76
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
-        // State 77
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
-        // State 78
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
-        // State 79
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
-        // State 80
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
-        // State 81
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 82
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
-        // State 83
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -520906,17 +536617,17 @@
         // State 6
         0,
         // State 7
-        0,
+        -244,
         // State 8
-        0,
+        -138,
         // State 9
-        0,
+        -202,
         // State 10
-        0,
+        -188,
         // State 11
         0,
         // State 12
-        0,
+        -201,
         // State 13
         0,
         // State 14
@@ -520926,7 +536637,7 @@
         // State 16
         0,
         // State 17
-        0,
+        -204,
         // State 18
         0,
         // State 19
@@ -520934,192 +536645,27 @@
         // State 20
         0,
         // State 21
-        0,
-        // State 22
-        0,
-        // State 23
-        0,
-        // State 24
-        0,
-        // State 25
-        0,
-        // State 26
-        0,
-        // State 27
-        0,
-        // State 28
-        0,
-        // State 29
-        -242,
-        // State 30
-        0,
-        // State 31
-        0,
-        // State 32
-        0,
-        // State 33
-        0,
-        // State 34
-        0,
-        // State 35
-        -189,
-        // State 36
-        0,
-        // State 37
-        0,
-        // State 38
-        0,
-        // State 39
-        0,
-        // State 40
-        0,
-        // State 41
-        0,
-        // State 42
-        0,
-        // State 43
-        0,
-        // State 44
-        0,
-        // State 45
-        0,
-        // State 46
-        0,
-        // State 47
-        0,
-        // State 48
-        0,
-        // State 49
-        0,
-        // State 50
-        0,
-        // State 51
-        0,
-        // State 52
-        0,
-        // State 53
-        0,
-        // State 54
-        0,
-        // State 55
-        0,
-        // State 56
-        0,
-        // State 57
-        0,
-        // State 58
-        0,
-        // State 59
-        0,
-        // State 60
-        0,
-        // State 61
-        0,
-        // State 62
-        0,
-        // State 63
-        0,
-        // State 64
-        0,
-        // State 65
-        0,
-        // State 66
-        0,
-        // State 67
-        0,
-        // State 68
-        0,
-        // State 69
-        0,
-        // State 70
-        0,
-        // State 71
-        0,
-        // State 72
-        0,
-        // State 73
-        0,
-        // State 74
-        0,
-        // State 75
-        0,
-        // State 76
-        0,
-        // State 77
-        0,
-        // State 78
-        0,
-        // State 79
-        0,
-        // State 80
-        0,
-        // State 81
-        0,
-        // State 82
-        0,
-        // State 83
-        0,
+        -203,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 24,
-            30 => 2,
-            37 => 13,
-            38 => 14,
-            39 => 12,
-            41 => 75,
-            45 => 31,
-            49 => match state {
-                10 => 21,
-                16 => 25,
-                18 => 26,
-                24 => 27,
-                _ => 4,
-            },
-            50 => 38,
-            51 => match state {
-                8 => 69,
-                9 => 70,
-                11 => 72,
-                13 => 73,
-                20 => 77,
-                _ => 39,
-            },
-            52 => match state {
-                14 => 23,
-                _ => 5,
-            },
-            53 => match state {
-                12 => 22,
-                _ => 6,
+            33 => 4,
+            46 => match state {
+                5 => 19,
+                _ => 14,
             },
-            55 => 40,
             60 => match state {
-                3 | 10 => 7,
-                0 => 28,
-                1..=2 => 32,
-                17 => 76,
-                _ => 19,
-            },
-            71 => 41,
-            72 => match state {
-                15 => 74,
-                _ => 68,
-            },
-            73 => 15,
-            82 => match state {
-                3 => 42,
-                10 => 71,
-                _ => 29,
+                0 => 6,
+                2 => 12,
+                _ => 9,
             },
-            83 => match state {
-                2 => 34,
-                _ => 33,
+            76 => 2,
+            81 => 7,
+            88 => match state {
+                1 => 10,
+                4 => 16,
+                _ => 15,
             },
-            85 => 43,
-            86 => 44,
-            89 => 8,
-            90 => 45,
             _ => 0,
         }
     }
@@ -521214,7 +536760,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::StructInitExpr;
+        type Success = ast::StructField;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -522235,19 +537781,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -522259,37 +537805,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -522301,7 +537847,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -522313,7 +537859,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -522331,43 +537877,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -522385,19 +537931,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -522409,7 +537955,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -522421,7 +537967,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -522433,25 +537979,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -522464,108 +538010,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -522577,43 +538123,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -522625,14 +538171,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -522650,248 +538196,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => __state_machine::SimulatedReduce::Accept,
             242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 122,
+                    nonterminal_produced: 121,
                 }
             }
-            243 => {
+            243 => __state_machine::SimulatedReduce::Accept,
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructInitExprParser {
+    pub(crate) struct StructFieldParser {
         _priv: (),
     }
 
-    impl StructInitExprParser {
-        pub(crate) fn new() -> StructInitExprParser {
-            StructInitExprParser {
+    impl StructFieldParser {
+        pub(crate) fn new() -> StructFieldParser {
+            StructFieldParser {
                 _priv: (),
             }
         }
@@ -522903,7 +538467,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::StructInitExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::StructField, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -522954,7 +538518,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::StructInitExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::StructField,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -523681,18 +539245,18 @@
                 __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             241 => {
-                // __StructInitExpr = StructInitExpr => ActionFn(27);
-                let __sym0 = __pop_Variant58(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action27::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             242 => {
                 __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             243 => {
-                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __StructField = StructField => ActionFn(33);
+                let __sym0 = __pop_Variant20(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action33::<>(__sym0);
+                return Some(Ok(__nt));
             }
             244 => {
                 __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -523709,6 +539273,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -524359,10 +539932,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -524373,11 +539946,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -524388,11 +539961,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -524403,13 +539976,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -524420,11 +539993,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -524435,10 +540008,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -524449,11 +540022,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -524464,10 +540037,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -524478,11 +540051,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -524493,10 +540066,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -524507,13 +540080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -524524,13 +540097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -524541,10 +540114,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -524555,14 +540128,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -524573,14 +540146,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -524591,10 +540164,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -524605,13 +540178,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -524622,13 +540195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -524639,10 +540212,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -524653,14 +540226,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -524671,14 +540244,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -524689,10 +540262,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -524703,13 +540276,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -524720,10 +540293,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -524734,11 +540307,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -524749,13 +540322,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -524766,14 +540339,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -524784,13 +540357,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -524801,10 +540374,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -524815,11 +540388,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -524830,13 +540403,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -524847,14 +540420,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -524865,13 +540438,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -524882,10 +540455,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -524896,11 +540469,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -524911,13 +540484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -524928,14 +540501,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -524946,13 +540519,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -524963,10 +540536,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -524977,11 +540550,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -524992,13 +540565,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -525009,14 +540582,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -525027,13 +540600,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -525044,10 +540617,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -525058,11 +540631,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -525073,13 +540646,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -525090,14 +540663,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -525108,13 +540681,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -525125,10 +540698,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -525139,11 +540712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -525154,13 +540727,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -525171,14 +540744,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -525189,13 +540762,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -525206,10 +540779,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -525220,11 +540793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -525235,13 +540808,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -525252,14 +540825,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -525270,10 +540843,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -525284,10 +540857,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -525298,14 +540871,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -525316,7 +540889,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -525324,7 +540897,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -525335,14 +540908,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -525353,7 +540926,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -525361,7 +540934,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -525372,11 +540945,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525387,11 +540960,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525402,11 +540975,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525417,11 +540990,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525432,11 +541005,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525447,11 +541020,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525462,11 +541035,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525477,11 +541050,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -525492,11 +541065,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -525507,11 +541080,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -525522,11 +541095,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -525537,11 +541110,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -525552,11 +541125,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -525567,11 +541140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -525582,11 +541155,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -525597,11 +541170,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -525612,14 +541185,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -525630,11 +541203,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -525645,10 +541218,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -525659,13 +541232,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -525676,11 +541249,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -525691,11 +541264,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -525706,10 +541279,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -525720,13 +541293,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -525737,11 +541310,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -525752,11 +541325,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -525767,10 +541340,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -525781,13 +541354,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -525798,11 +541371,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -525813,11 +541386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -525828,10 +541401,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -525842,13 +541415,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -525859,11 +541432,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -525874,11 +541447,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -525889,10 +541462,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -525903,13 +541476,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -525920,11 +541493,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -525935,11 +541508,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -525950,10 +541523,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -525964,13 +541537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -525981,11 +541554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -525996,7 +541569,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -526007,7 +541580,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -526018,11 +541591,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -526033,10 +541606,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -526047,13 +541620,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -526064,11 +541637,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -526079,14 +541652,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -526097,11 +541670,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -526112,11 +541685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -526127,14 +541700,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -526145,13 +541718,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -526162,13 +541735,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -526179,13 +541752,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -526196,11 +541769,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -526211,14 +541784,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -526229,11 +541802,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -526244,14 +541817,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -526262,11 +541835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -526277,11 +541850,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -526292,10 +541865,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -526306,7 +541879,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -526314,7 +541887,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -526325,14 +541898,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -526343,11 +541916,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -526358,10 +541931,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -526372,7 +541945,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -526381,7 +541954,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -526392,7 +541965,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -526403,7 +541976,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -526414,7 +541987,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -526428,7 +542001,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -526439,7 +542012,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -526451,7 +542024,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -526462,7 +542035,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -526475,7 +542048,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -526486,7 +542059,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -526497,7 +542070,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -526508,7 +542081,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -526521,7 +542094,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -526532,7 +542105,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -526543,7 +542116,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -526554,7 +542127,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -526566,7 +542139,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -526577,7 +542150,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -526587,7 +542160,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -526598,11 +542171,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -526613,11 +542186,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -526628,10 +542201,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -526642,7 +542215,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -526651,36 +542259,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -526690,36 +542298,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -526730,18 +542338,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -526751,18 +542359,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -526773,18 +542381,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -526794,143 +542402,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -526940,18 +542548,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -526960,412 +542568,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -527377,18 +542985,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -527397,262 +543005,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -527661,18 +543269,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -527680,388 +543288,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -528074,249 +543682,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
-        let __sym0 = __pop_Variant20(__symbols);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
+        let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        let __nt = super::__action28::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -528329,59 +543952,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__StructInitExpr::StructInitExprParser;
+pub(crate) use self::__parse__StructField::StructFieldParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__StructInitField {
+mod __parse__StructInitExpr {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -528463,171 +544086,215 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 2
-        0, 0, 0, 46, 0, 0, 0, 0, 47, -190, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, -190, 0,
+        0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 51, -121, -121, 52, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 58, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 4
-        0, 0, 59, -111, 0, 0, -111, 60, -111, -111, -111, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 5
-        0, -164, -164, -164, -164, 15, -164, -164, -164, -164, -164, 0, 16, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 17, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, -164, -164, -164, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 7
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 20, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 8
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 71, 0, 0, 0, 0, 72, -192, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, -192, 0,
         // State 9
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 76, -121, -121, 77, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 78, 79, 0, 80, 81, 82, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 83, -121, 0,
         // State 10
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 84, -111, 0, 0, -111, 85, -111, -111, -111, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 11
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, -166, -166, -166, -166, 22, -166, -166, -166, -166, -166, 0, 23, 0, -166, 0, 38, 0, -166, -166, 0, -166, -166, -166, 24, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 12
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 13
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 16, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 17, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 26, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 14
-        40, 0, 0, 8, 0, 9, -82, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 15
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 16
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 17
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 18
-        0, -164, -164, -164, -164, 15, -164, -164, -164, -164, -164, 0, 16, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 17, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 19
-        40, 0, 0, 8, 0, 9, 0, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 20
-        0, 0, 0, 46, 0, 0, 74, 0, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 23, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 24, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 21
-        0, 0, 59, -110, 0, 0, -110, 60, -110, -110, -110, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        63, 0, 0, 14, 0, 15, -82, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 22
-        0, 51, -120, -120, 52, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 53, 54, 0, 55, 56, 57, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 58, -120, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 23
-        40, 0, 0, 8, 0, 9, -84, 10, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 31, 0, 0, 43, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 45,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 24
-        0, 0, 0, 46, 0, 0, -81, 0, 47, 77, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        0, -166, -166, -166, -166, 22, -166, -166, -166, -166, -166, 0, 23, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 24, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 25
-        0, 0, 0, 46, 0, 0, 0, 0, 47, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        63, 0, 0, 14, 0, 15, 0, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 71, 0, 0, 99, 0, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
         // State 27
-        0, 0, 0, 46, 0, 0, -83, 0, 47, 82, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0,
+        0, 0, 84, -110, 0, 0, -110, 85, -110, -110, -110, 0, 0, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 28
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 76, -120, -120, 77, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 78, 79, 0, 80, 81, 82, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 83, -120, 0,
         // State 29
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        63, 0, 0, 14, 0, 15, -84, 16, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 37, 0, 0, 66, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 68,
         // State 30
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 71, 0, 0, -81, 0, 72, 103, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
         // State 31
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, 0, 0, 71, 0, 0, 0, 0, 72, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
         // State 32
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, 0, 0, 71, 0, 0, -83, 0, 72, 105, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0,
         // State 33
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0,
         // State 34
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0,
         // State 35
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 37
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 38
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0,
         // State 39
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 40
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 41
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 42
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 43
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 44
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 45
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 46
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 47
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 48
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 49
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 50
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 51
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 52
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 54
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 55
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 56
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 57
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 58
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 59
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 60
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 61
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 62
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 63
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 64
-        0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 65
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 66
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 67
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 68
-        0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 69
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 70
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 71
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 72
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 73
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 74
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 75
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 76
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 77
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 81
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 83
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 84
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 85
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 86
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
+        // State 87
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        // State 88
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 90
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        // State 94
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
+        // State 95
+        0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        // State 97
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        // State 98
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        // State 99
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        // State 102
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 103
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        // State 104
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -528638,13 +544305,13 @@
         // State 1
         0,
         // State 2
-        -190,
+        0,
         // State 3
-        -121,
+        0,
         // State 4
-        -111,
+        0,
         // State 5
-        -164,
+        0,
         // State 6
         0,
         // State 7
@@ -528660,7 +544327,7 @@
         // State 12
         0,
         // State 13
-        -163,
+        0,
         // State 14
         0,
         // State 15
@@ -528670,15 +544337,15 @@
         // State 17
         0,
         // State 18
-        -164,
+        0,
         // State 19
         0,
         // State 20
         0,
         // State 21
-        -110,
+        0,
         // State 22
-        -120,
+        0,
         // State 23
         0,
         // State 24
@@ -528692,41 +544359,41 @@
         // State 28
         0,
         // State 29
-        -243,
+        0,
         // State 30
-        -138,
+        0,
         // State 31
-        -117,
+        0,
         // State 32
-        -119,
+        0,
         // State 33
-        -197,
+        0,
         // State 34
-        -211,
+        0,
         // State 35
-        -191,
+        -245,
         // State 36
-        -112,
+        0,
         // State 37
-        -195,
+        0,
         // State 38
-        -196,
+        0,
         // State 39
         0,
         // State 40
         0,
         // State 41
-        -209,
+        0,
         // State 42
-        -208,
+        0,
         // State 43
-        -210,
+        0,
         // State 44
         0,
         // State 45
         0,
         // State 46
-        0,
+        -191,
         // State 47
         0,
         // State 48
@@ -528756,109 +544423,168 @@
         // State 60
         0,
         // State 61
-        -167,
+        0,
         // State 62
-        -116,
+        0,
         // State 63
-        -114,
+        0,
         // State 64
         0,
         // State 65
-        -115,
+        0,
         // State 66
-        -118,
+        0,
         // State 67
-        -168,
+        0,
         // State 68
         0,
         // State 69
-        -165,
+        0,
         // State 70
         0,
         // State 71
         0,
         // State 72
-        -113,
+        0,
         // State 73
-        -194,
+        0,
         // State 74
-        -198,
+        0,
         // State 75
-        -124,
+        0,
         // State 76
         0,
         // State 77
-        -166,
+        0,
         // State 78
         0,
         // State 79
-        -189,
+        0,
         // State 80
         0,
         // State 81
         0,
         // State 82
         0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 23,
-            30 => 26,
-            37 => 11,
-            38 => 12,
-            39 => 10,
-            41 => 68,
-            45 => 70,
+            15 => 29,
+            30 => 3,
+            33 => 4,
+            37 => 18,
+            38 => 19,
+            39 => 17,
+            41 => 95,
+            45 => 38,
+            46 => match state {
+                7 => 69,
+                16 => 92,
+                _ => 41,
+            },
             49 => match state {
-                8 => 20,
-                14 => 24,
-                16 => 25,
-                23 => 27,
-                _ => 2,
+                14 => 26,
+                21 => 30,
+                23 => 31,
+                29 => 32,
+                _ => 8,
             },
-            50 => 31,
+            50 => 54,
             51 => match state {
-                6 => 62,
-                7 => 63,
-                9 => 65,
-                11 => 66,
-                19 => 72,
-                _ => 32,
+                12 => 87,
+                13 => 88,
+                15 => 90,
+                18 => 93,
+                25 => 97,
+                _ => 55,
             },
             52 => match state {
-                12 => 22,
-                _ => 3,
+                19 => 28,
+                _ => 9,
             },
             53 => match state {
-                10 => 21,
-                _ => 4,
+                17 => 27,
+                _ => 10,
             },
-            55 => 33,
+            55 => 56,
             60 => match state {
-                1 | 8 => 5,
-                0 | 17 | 26 => 28,
-                15 => 69,
-                _ => 18,
+                6 | 14 => 11,
+                0 => 33,
+                1 | 3 => 39,
+                2 | 4 | 7 | 16 => 42,
+                5 => 50,
+                22 => 96,
+                _ => 24,
             },
-            71 => 34,
-            72 => match state {
-                13 => 67,
-                _ => 61,
+            62 => 34,
+            72 => 57,
+            73 => match state {
+                20 => 94,
+                _ => 86,
             },
-            73 => 13,
-            82 => match state {
-                8 => 64,
+            74 => 20,
+            76 => 5,
+            83 => match state {
+                6 => 58,
+                14 => 89,
                 _ => 35,
             },
-            83 => match state {
-                17 => 71,
-                26 => 78,
-                _ => 29,
+            84 => match state {
+                3 => 45,
+                _ => 40,
             },
-            85 => 36,
-            86 => 37,
-            89 => 6,
-            90 => 38,
+            86 => 59,
+            87 => 60,
+            88 => match state {
+                4 => 48,
+                _ => 43,
+            },
+            90 => 12,
+            91 => 61,
             _ => 0,
         }
     }
@@ -528953,7 +544679,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = (ast::Ident, ast::StructInitField);
+        type Success = ast::StructInitExpr;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -529974,19 +545700,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -529998,37 +545724,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -530040,7 +545766,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -530052,7 +545778,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -530070,43 +545796,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -530124,19 +545850,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -530148,7 +545874,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -530160,7 +545886,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -530172,25 +545898,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -530203,108 +545929,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -530316,43 +546042,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -530364,14 +546090,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -530389,248 +546115,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => __state_machine::SimulatedReduce::Accept,
             243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 123,
+                    nonterminal_produced: 122,
                 }
             }
-            244 => {
+            244 => __state_machine::SimulatedReduce::Accept,
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct StructInitFieldParser {
+    pub(crate) struct StructInitExprParser {
         _priv: (),
     }
 
-    impl StructInitFieldParser {
-        pub(crate) fn new() -> StructInitFieldParser {
-            StructInitFieldParser {
+    impl StructInitExprParser {
+        pub(crate) fn new() -> StructInitExprParser {
+            StructInitExprParser {
                 _priv: (),
             }
         }
@@ -530642,7 +546386,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<(ast::Ident, ast::StructInitField), __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::StructInitExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -530693,7 +546437,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<(ast::Ident, ast::StructInitField),__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::StructInitExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -531423,18 +547167,18 @@
                 __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             242 => {
-                // __StructInitField = StructInitField => ActionFn(26);
-                let __sym0 = __pop_Variant22(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action26::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             243 => {
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             244 => {
-                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __StructInitExpr = StructInitExpr => ActionFn(28);
+                let __sym0 = __pop_Variant58(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action28::<>(__sym0);
+                return Some(Ok(__nt));
             }
             245 => {
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -531448,6 +547192,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -532098,10 +547851,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -532112,11 +547865,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -532127,11 +547880,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -532142,13 +547895,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -532159,11 +547912,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -532174,10 +547927,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -532188,11 +547941,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -532203,10 +547956,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -532217,11 +547970,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -532232,10 +547985,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -532246,13 +547999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -532263,13 +548016,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -532280,10 +548033,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -532294,14 +548047,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -532312,14 +548065,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -532330,10 +548083,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -532344,13 +548097,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -532361,13 +548114,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -532378,10 +548131,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -532392,14 +548145,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -532410,14 +548163,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -532428,10 +548181,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -532442,13 +548195,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -532459,10 +548212,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -532473,11 +548226,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -532488,13 +548241,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -532505,14 +548258,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -532523,13 +548276,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -532540,10 +548293,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -532554,11 +548307,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -532569,13 +548322,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -532586,14 +548339,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -532604,13 +548357,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -532621,10 +548374,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -532635,11 +548388,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -532650,13 +548403,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -532667,14 +548420,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -532685,13 +548438,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -532702,10 +548455,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -532716,11 +548469,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -532731,13 +548484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -532748,14 +548501,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -532766,13 +548519,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -532783,10 +548536,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -532797,11 +548550,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -532812,13 +548565,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -532829,14 +548582,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -532847,13 +548600,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -532864,10 +548617,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -532878,11 +548631,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -532893,13 +548646,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -532910,14 +548663,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -532928,13 +548681,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -532945,10 +548698,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -532959,11 +548712,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -532974,13 +548727,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -532991,14 +548744,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -533009,10 +548762,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -533023,10 +548776,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -533037,14 +548790,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -533055,7 +548808,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -533063,7 +548816,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -533074,14 +548827,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -533092,7 +548845,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -533100,7 +548853,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -533111,11 +548864,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533126,11 +548879,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533141,11 +548894,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533156,11 +548909,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533171,11 +548924,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533186,11 +548939,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533201,11 +548954,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533216,11 +548969,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -533231,11 +548984,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -533246,11 +548999,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -533261,11 +549014,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -533276,11 +549029,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -533291,11 +549044,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -533306,11 +549059,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -533321,11 +549074,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -533336,11 +549089,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -533351,14 +549104,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -533369,11 +549122,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -533384,10 +549137,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -533398,13 +549151,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -533415,11 +549168,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -533430,11 +549183,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -533445,10 +549198,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -533459,13 +549212,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -533476,11 +549229,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -533491,11 +549244,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -533506,10 +549259,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -533520,13 +549273,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -533537,11 +549290,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -533552,11 +549305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -533567,10 +549320,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -533581,13 +549334,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -533598,11 +549351,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -533613,11 +549366,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -533628,10 +549381,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -533642,13 +549395,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -533659,11 +549412,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -533674,11 +549427,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -533689,10 +549442,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -533703,13 +549456,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -533720,11 +549473,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -533735,7 +549488,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -533746,7 +549499,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -533757,11 +549510,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -533772,10 +549525,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -533786,13 +549539,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -533803,11 +549556,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -533818,14 +549571,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -533836,11 +549589,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -533851,11 +549604,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -533866,14 +549619,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -533884,13 +549637,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -533901,13 +549654,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -533918,13 +549671,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -533935,11 +549688,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -533950,14 +549703,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -533968,11 +549721,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -533983,14 +549736,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -534001,11 +549754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -534016,11 +549769,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -534031,10 +549784,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -534045,7 +549798,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -534053,7 +549806,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -534064,14 +549817,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -534082,11 +549835,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -534097,10 +549850,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -534111,7 +549864,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -534120,7 +549873,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -534131,7 +549884,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -534142,7 +549895,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -534153,7 +549906,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -534167,7 +549920,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -534178,7 +549931,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -534190,7 +549943,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -534201,7 +549954,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -534214,7 +549967,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -534225,7 +549978,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -534236,7 +549989,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -534247,7 +550000,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -534260,7 +550013,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -534271,7 +550024,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -534282,7 +550035,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -534293,7 +550046,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -534305,7 +550058,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -534316,7 +550069,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -534326,7 +550079,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -534337,11 +550090,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -534352,11 +550105,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -534367,10 +550120,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -534381,7 +550134,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -534390,36 +550178,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -534429,36 +550217,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -534469,18 +550257,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -534490,18 +550278,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -534512,18 +550300,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -534533,143 +550321,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -534679,18 +550467,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -534699,412 +550487,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -535116,18 +550904,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -535136,262 +550924,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -535400,18 +551188,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -535419,388 +551207,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -535813,249 +551601,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
-        let __sym0 = __pop_Variant58(__symbols);
+        // __StructInitField = StructInitField => ActionFn(27);
+        let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action27::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -536068,59 +551871,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__StructInitField::StructInitFieldParser;
+pub(crate) use self::__parse__StructInitExpr::StructInitExprParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Term {
+mod __parse__StructInitField {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -536202,171 +552005,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, -164, -164, -164, -164, 5, -164, -164, -164, -164, -164, 0, 6, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 7, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 2
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, -192, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, -192, 0,
         // State 3
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 6, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 7, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, 57, -121, -121, 58, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 59, 60, 0, 61, 62, 63, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 64, -121, 0,
         // State 4
-        43, 0, 0, 13, 0, 3, -82, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 65, -111, 0, 0, -111, 66, -111, -111, -111, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 15, -166, -166, -166, -166, -166, 0, 16, 0, -166, 0, 69, 0, -166, -166, 0, -166, -166, -166, 17, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 6
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 7
-        0, 0, 0, 49, 0, 0, 50, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 20, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 8
-        0, 55, -121, -121, 56, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 62, -121, 0,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 9
-        0, 0, 63, -111, 0, 0, -111, 64, -111, -111, -111, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 10
-        0, -164, -164, -164, -164, 5, -164, -164, -164, -164, -164, 0, 6, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 7, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, -164, -164, -164, 0,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 11
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 12
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 22, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 13
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 16, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 17, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 14
-        43, 0, 0, 13, 0, 3, -84, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        46, 0, 0, 8, 0, 9, -82, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 15
-        0, 0, 0, 49, 0, 0, -81, 0, 51, 71, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 16
-        0, 0, 0, 49, 0, 0, 0, 0, 51, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 17
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 18
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, -166, -166, -166, -166, 15, -166, -166, -166, -166, -166, 0, 16, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 17, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 19
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        46, 0, 0, 8, 0, 9, 0, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 20
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 52, 0, 0, 81, 0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,
         // State 21
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 65, -110, 0, 0, -110, 66, -110, -110, -110, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 22
-        0, 0, 0, 49, 0, 0, -83, 0, 51, 78, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0,
+        0, 57, -120, -120, 58, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 59, 60, 0, 61, 62, 63, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 64, -120, 0,
         // State 23
-        0, 0, 63, -110, 0, 0, -110, 64, -110, -110, -110, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        46, 0, 0, 8, 0, 9, -84, 10, 0, 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 36, 0, 0, 49, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 24
-        0, 55, -120, -120, 56, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 57, 58, 0, 59, 60, 61, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 62, -120, 0,
+        0, 0, 0, 52, 0, 0, -81, 0, 53, 84, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,
         // State 25
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        43, 0, 0, 13, 0, 3, 0, 14, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 45,
+        0, 0, 0, 52, 0, 0, 0, 0, 53, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,
         // State 27
-        0, 0, 0, 49, 0, 0, 0, 0, 51, -190, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 28
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        0, 0, 0, 52, 0, 0, -83, 0, 53, 93, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0,
         // State 29
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 35
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 36
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 37
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 38
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 39
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0,
         // State 40
-        0, 0, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 41
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 42
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 43
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 44
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 45
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 46
-        0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 47
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 48
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 49
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 50
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 51
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 52
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 53
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 54
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 55
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 56
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 57
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 58
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 59
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 60
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 61
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 62
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 63
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 64
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 65
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 66
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 67
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 68
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 69
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 70
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 71
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 77
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 78
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 79
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        // State 83
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 84
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -536375,15 +552220,15 @@
         // State 0
         0,
         // State 1
-        -164,
-        // State 2
         0,
+        // State 2
+        -192,
         // State 3
-        -163,
+        -121,
         // State 4
-        0,
+        -111,
         // State 5
-        0,
+        -166,
         // State 6
         0,
         // State 7
@@ -536399,7 +552244,7 @@
         // State 12
         0,
         // State 13
-        0,
+        -165,
         // State 14
         0,
         // State 15
@@ -536409,15 +552254,15 @@
         // State 17
         0,
         // State 18
-        0,
+        -166,
         // State 19
         0,
         // State 20
         0,
         // State 21
-        0,
+        -110,
         // State 22
-        0,
+        -120,
         // State 23
         0,
         // State 24
@@ -536429,49 +552274,49 @@
         // State 27
         0,
         // State 28
-        -197,
+        0,
         // State 29
-        -211,
+        0,
         // State 30
-        -244,
+        0,
         // State 31
-        -195,
+        0,
         // State 32
-        -196,
+        0,
         // State 33
-        -209,
+        0,
         // State 34
-        -138,
+        -246,
         // State 35
-        -208,
+        -138,
         // State 36
-        -210,
+        -117,
         // State 37
-        -167,
+        -119,
         // State 38
-        0,
+        -199,
         // State 39
         0,
         // State 40
-        0,
+        -213,
         // State 41
-        0,
+        -193,
         // State 42
-        0,
+        -112,
         // State 43
-        0,
+        -197,
         // State 44
-        0,
+        -198,
         // State 45
-        -168,
+        0,
         // State 46
         0,
         // State 47
-        -165,
+        -211,
         // State 48
-        0,
+        -210,
         // State 49
-        -194,
+        -212,
         // State 50
         0,
         // State 51
@@ -536503,103 +552348,157 @@
         // State 64
         0,
         // State 65
-        -198,
+        0,
         // State 66
         0,
         // State 67
-        0,
+        -169,
         // State 68
         0,
         // State 69
-        -124,
+        -116,
         // State 70
-        0,
+        -114,
         // State 71
-        -166,
-        // State 72
         0,
+        // State 72
+        -115,
         // State 73
-        0,
+        -118,
         // State 74
-        0,
+        -170,
         // State 75
         0,
         // State 76
-        0,
+        -167,
         // State 77
         0,
         // State 78
         0,
         // State 79
-        0,
+        -113,
         // State 80
-        0,
+        -196,
         // State 81
-        0,
+        -200,
         // State 82
+        -124,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        -168,
+        // State 89
+        0,
+        // State 90
+        -191,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
         0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 14,
-            30 => 25,
-            37 => 18,
-            38 => 19,
-            39 => 17,
-            41 => 46,
-            45 => 73,
+            15 => 23,
+            30 => 27,
+            33 => 29,
+            37 => 11,
+            38 => 12,
+            39 => 10,
+            41 => 75,
+            45 => 77,
+            46 => match state {
+                31 => 100,
+                32 => 102,
+                _ => 84,
+            },
             49 => match state {
-                4 => 15,
-                6 => 16,
-                14 => 22,
-                26 => 27,
-                _ => 7,
+                8 => 20,
+                14 => 24,
+                16 => 26,
+                23 => 28,
+                _ => 2,
             },
-            50 => 38,
+            50 => 36,
             51 => match state {
-                11 => 66,
-                12 => 67,
-                13 => 68,
-                18 => 72,
-                21 => 76,
-                _ => 39,
+                6 => 69,
+                7 => 70,
+                9 => 72,
+                11 => 73,
+                19 => 79,
+                _ => 37,
             },
             52 => match state {
-                19 => 24,
-                _ => 8,
+                12 => 22,
+                _ => 3,
             },
             53 => match state {
-                17 => 23,
-                _ => 9,
+                10 => 21,
+                _ => 4,
             },
-            55 => 28,
+            55 => 38,
             60 => match state {
-                2 | 26 => 10,
-                5 => 47,
-                20 | 25 => 74,
-                _ => 1,
-            },
-            71 => 29,
-            72 => match state {
-                3 => 45,
-                _ => 37,
+                1 | 8 => 5,
+                0 | 17 | 27 => 33,
+                15 => 76,
+                25 | 29 | 31..=32 => 85,
+                30 => 95,
+                _ => 18,
             },
-            73 => 3,
-            82 => match state {
-                26 => 82,
-                _ => 40,
+            62 => 39,
+            72 => 40,
+            73 => match state {
+                13 => 74,
+                _ => 67,
             },
+            74 => 13,
+            76 => 30,
             83 => match state {
-                25 => 78,
-                _ => 75,
-            },
-            85 => match state {
-                0 => 30,
+                8 => 71,
                 _ => 41,
             },
-            86 => 31,
-            89 => 11,
-            90 => 32,
+            84 => match state {
+                17 => 78,
+                27 => 89,
+                _ => 34,
+            },
+            86 => 42,
+            87 => 43,
+            88 => match state {
+                29 => 93,
+                _ => 86,
+            },
+            90 => 6,
+            91 => 44,
             _ => 0,
         }
     }
@@ -536694,7 +552593,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Expression;
+        type Success = (ast::Ident, ast::StructInitField);
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -537715,19 +553614,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -537739,37 +553638,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -537781,7 +553680,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -537793,7 +553692,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -537811,43 +553710,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -537865,19 +553764,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -537889,7 +553788,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -537901,7 +553800,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -537913,25 +553812,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -537944,108 +553843,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -538057,43 +553956,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -538105,14 +554004,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -538130,248 +554029,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => __state_machine::SimulatedReduce::Accept,
             244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 124,
+                    nonterminal_produced: 123,
                 }
             }
-            245 => {
+            245 => __state_machine::SimulatedReduce::Accept,
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct TermParser {
+    pub(crate) struct StructInitFieldParser {
         _priv: (),
     }
 
-    impl TermParser {
-        pub(crate) fn new() -> TermParser {
-            TermParser {
+    impl StructInitFieldParser {
+        pub(crate) fn new() -> StructInitFieldParser {
+            StructInitFieldParser {
                 _priv: (),
             }
         }
@@ -538383,7 +554300,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<(ast::Ident, ast::StructInitField), __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -538434,7 +554351,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<(ast::Ident, ast::StructInitField),__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -539167,18 +555084,18 @@
                 __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             243 => {
-                // __Term = Term => ActionFn(15);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action15::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             244 => {
                 __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             245 => {
-                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __StructInitField = StructInitField => ActionFn(27);
+                let __sym0 = __pop_Variant22(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action27::<>(__sym0);
+                return Some(Ok(__nt));
             }
             246 => {
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -539189,6 +555106,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -539839,10 +555765,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -539853,11 +555779,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -539868,11 +555794,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -539883,13 +555809,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -539900,11 +555826,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -539915,10 +555841,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -539929,11 +555855,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -539944,10 +555870,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -539958,11 +555884,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -539973,10 +555899,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -539987,13 +555913,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -540004,13 +555930,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -540021,10 +555947,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -540035,14 +555961,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -540053,14 +555979,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -540071,10 +555997,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -540085,13 +556011,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -540102,13 +556028,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -540119,10 +556045,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -540133,14 +556059,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -540151,14 +556077,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -540169,10 +556095,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -540183,13 +556109,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -540200,10 +556126,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -540214,11 +556140,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -540229,13 +556155,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -540246,14 +556172,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -540264,13 +556190,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -540281,10 +556207,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -540295,11 +556221,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -540310,13 +556236,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -540327,14 +556253,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -540345,13 +556271,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -540362,10 +556288,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -540376,11 +556302,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -540391,13 +556317,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -540408,14 +556334,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -540426,13 +556352,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -540443,10 +556369,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -540457,11 +556383,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -540472,13 +556398,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -540489,14 +556415,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -540507,13 +556433,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -540524,10 +556450,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -540538,11 +556464,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -540553,13 +556479,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -540570,14 +556496,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -540588,13 +556514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -540605,10 +556531,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -540619,11 +556545,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -540634,13 +556560,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -540651,14 +556577,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -540669,13 +556595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -540686,10 +556612,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -540700,11 +556626,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -540715,13 +556641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -540732,14 +556658,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -540750,10 +556676,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -540764,10 +556690,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -540778,14 +556704,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -540796,7 +556722,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -540804,7 +556730,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -540815,14 +556741,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -540833,7 +556759,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -540841,7 +556767,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -540852,11 +556778,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540867,11 +556793,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540882,11 +556808,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540897,11 +556823,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540912,11 +556838,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540927,11 +556853,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540942,11 +556868,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540957,11 +556883,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -540972,11 +556898,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -540987,11 +556913,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -541002,11 +556928,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -541017,11 +556943,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541032,11 +556958,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541047,11 +556973,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541062,11 +556988,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541077,11 +557003,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -541092,14 +557018,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -541110,11 +557036,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -541125,10 +557051,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -541139,13 +557065,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -541156,11 +557082,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -541171,11 +557097,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -541186,10 +557112,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -541200,13 +557126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -541217,11 +557143,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -541232,11 +557158,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -541247,10 +557173,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -541261,13 +557187,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -541278,11 +557204,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -541293,11 +557219,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -541308,10 +557234,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -541322,13 +557248,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -541339,11 +557265,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -541354,11 +557280,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -541369,10 +557295,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -541383,13 +557309,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -541400,11 +557326,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -541415,11 +557341,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -541430,10 +557356,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -541444,13 +557370,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -541461,11 +557387,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -541476,7 +557402,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -541487,7 +557413,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -541498,11 +557424,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -541513,10 +557439,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -541527,13 +557453,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -541544,11 +557470,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -541559,14 +557485,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -541577,11 +557503,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -541592,11 +557518,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -541607,14 +557533,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -541625,13 +557551,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -541642,13 +557568,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -541659,13 +557585,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -541676,11 +557602,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -541691,14 +557617,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -541709,11 +557635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -541724,14 +557650,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -541742,11 +557668,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -541757,11 +557683,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -541772,10 +557698,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -541786,7 +557712,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -541794,7 +557720,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -541805,14 +557731,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -541823,11 +557749,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -541838,10 +557764,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -541852,7 +557778,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -541861,7 +557787,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -541872,7 +557798,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -541883,7 +557809,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -541894,7 +557820,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -541908,7 +557834,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -541919,7 +557845,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -541931,7 +557857,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -541942,7 +557868,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -541955,7 +557881,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -541966,7 +557892,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -541977,7 +557903,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -541988,7 +557914,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -542001,7 +557927,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -542012,7 +557938,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -542023,7 +557949,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -542034,7 +557960,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -542046,7 +557972,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -542057,7 +557983,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -542067,7 +557993,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -542078,11 +558004,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -542093,11 +558019,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -542108,10 +558034,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -542122,7 +558048,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -542131,36 +558092,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -542170,36 +558131,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -542210,18 +558171,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -542231,18 +558192,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -542253,18 +558214,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -542274,143 +558235,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -542420,18 +558381,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -542440,412 +558401,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -542857,18 +558818,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -542877,262 +558838,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -543141,18 +559102,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -543160,388 +559121,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -543554,249 +559515,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
-        let __sym0 = __pop_Variant22(__symbols);
+        // __Term = Term => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        let __nt = super::__action16::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -543809,59 +559785,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__Term::TermParser;
+pub(crate) use self::__parse__StructInitField::StructInitFieldParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Term0 {
+mod __parse__Term {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -543943,175 +559919,213 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, -164, -164, -164, -164, 5, -164, -164, -164, -164, -164, 0, 6, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 7, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
+        0, -166, -166, -166, -166, 5, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 7, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 3
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 6, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 7, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 6, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 7, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 4
-        47, 0, 0, 13, 0, 14, -82, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, -82, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 7
-        47, 0, 0, 13, 0, 14, -84, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        0, 0, 0, 55, 0, 0, 56, 0, 57, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 8
-        0, 0, 0, 53, 0, 0, -81, 0, 54, 55, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 61, -121, -121, 62, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 63, 64, 0, 65, 66, 67, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 68, -121, 0,
         // State 9
-        0, 59, -121, -121, 60, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 66, -121, 0,
+        0, 0, 69, -111, 0, 0, -111, 70, -111, -111, -111, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 10
-        0, 0, 67, -111, 0, 0, -111, 68, -111, -111, -111, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
+        0, -166, -166, -166, -166, 5, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 72, 0, -166, -166, 0, -166, -166, -166, 7, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 11
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 12
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 22, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 22, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 13
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 14
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, -84, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 15
-        0, 0, 0, 53, 0, 0, 0, 0, 54, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, -81, 0, 57, 78, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 55, 0, 0, 0, 0, 57, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 17
-        0, 0, 0, 53, 0, 0, -83, 0, 54, 77, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 18
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 19
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 20
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 21
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 22
-        0, 0, 0, 53, 0, 0, 80, 0, 54, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, -83, 0, 57, 85, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0,
         // State 23
-        0, -164, -164, -164, -164, 5, -164, -164, -164, -164, -164, 0, 6, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 7, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, -164, -164, -164, 0,
+        0, 0, 69, -110, 0, 0, -110, 70, -110, -110, -110, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, 61, -120, -120, 62, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 63, 64, 0, 65, 66, 67, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 68, -120, 0,
         // State 25
-        0, 0, 67, -110, 0, 0, -110, 68, -110, -110, -110, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 26
-        0, 59, -120, -120, 60, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 66, -120, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 27
-        47, 0, 0, 13, 0, 14, 0, 15, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 35, 0, 0, 36, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 49,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 28
-        0, 0, 0, 53, 0, 0, 0, 0, 54, -190, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -190, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        49, 0, 0, 13, 0, 3, 0, 14, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 51,
         // State 30
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 31
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 55, 0, 0, 0, 0, 57, -192, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, -192, 0,
         // State 32
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 33
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 34
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 35
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 37
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 38
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 40
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 41
-        0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 42
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 43
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 44
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 45
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0,
         // State 46
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 47
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 48
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 49
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 50
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 51
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 52
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, 0, 0, 0, 0, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 53
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 54
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 55
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 56
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 57
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 58
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 59
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 60
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 61
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 62
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 63
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 64
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 65
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 66
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 67
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 68
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 69
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 70
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 71
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 72
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 73
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 74
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 76
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 77
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 78
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 79
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 80
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
         // State 81
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 84
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 85
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 86
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 99
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -544120,11 +560134,11 @@
         // State 0
         0,
         // State 1
-        -164,
+        -166,
         // State 2
         0,
         // State 3
-        -163,
+        -165,
         // State 4
         0,
         // State 5
@@ -544176,33 +560190,33 @@
         // State 28
         0,
         // State 29
-        -197,
+        0,
         // State 30
-        -211,
+        0,
         // State 31
-        -245,
+        0,
         // State 32
-        -196,
+        0,
         // State 33
-        -209,
+        -199,
         // State 34
-        -138,
+        -213,
         // State 35
-        -208,
+        -247,
         // State 36
-        -210,
+        -197,
         // State 37
-        -167,
+        -198,
         // State 38
-        0,
+        -211,
         // State 39
-        0,
+        -138,
         // State 40
-        -168,
+        -210,
         // State 41
-        0,
+        -212,
         // State 42
-        0,
+        -169,
         // State 43
         0,
         // State 44
@@ -544216,19 +560230,19 @@
         // State 48
         0,
         // State 49
-        -165,
+        0,
         // State 50
-        -198,
+        0,
         // State 51
-        -124,
+        -170,
         // State 52
         0,
         // State 53
-        0,
+        -167,
         // State 54
         0,
         // State 55
-        0,
+        -196,
         // State 56
         0,
         // State 57
@@ -544262,7 +560276,7 @@
         // State 71
         0,
         // State 72
-        -166,
+        -200,
         // State 73
         0,
         // State 74
@@ -544270,11 +560284,11 @@
         // State 75
         0,
         // State 76
-        0,
+        -124,
         // State 77
         0,
         // State 78
-        0,
+        -168,
         // State 79
         0,
         // State 80
@@ -544287,69 +560301,120 @@
         0,
         // State 84
         0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 7,
-            30 => 24,
-            37 => 19,
-            38 => 20,
-            39 => 18,
-            41 => 41,
-            45 => 73,
+            15 => 14,
+            30 => 26,
+            33 => 27,
+            37 => 18,
+            38 => 19,
+            39 => 17,
+            41 => 52,
+            45 => 80,
+            46 => match state {
+                30 => 100,
+                32 => 102,
+                _ => 85,
+            },
             49 => match state {
-                6 => 15,
-                7 => 17,
-                13 => 22,
-                27 => 28,
-                _ => 8,
+                4 => 15,
+                6 => 16,
+                14 => 22,
+                29 => 31,
+                _ => 7,
             },
-            50 => 42,
+            50 => 43,
             51 => match state {
-                11 => 69,
-                12 => 70,
-                14 => 71,
-                19 => 77,
-                21 => 78,
-                _ => 43,
+                11 => 73,
+                12 => 74,
+                13 => 75,
+                18 => 79,
+                21 => 83,
+                _ => 44,
             },
             52 => match state {
-                20 => 26,
-                _ => 9,
+                19 => 24,
+                _ => 8,
             },
             53 => match state {
-                18 => 25,
-                _ => 10,
+                17 => 23,
+                _ => 9,
             },
-            55 => 29,
+            55 => 33,
             60 => match state {
-                13 | 27 => 23,
-                2 => 38,
-                5 => 49,
-                16 | 24 => 74,
+                2 | 29 => 10,
+                5 => 53,
+                20 | 26 => 81,
+                25 | 27 | 30 | 32 => 86,
+                28 => 94,
                 _ => 1,
             },
-            71 => 30,
-            72 => match state {
-                3 => 40,
-                _ => 37,
-            },
-            73 => 3,
-            82 => match state {
-                27 => 84,
-                _ => 39,
+            62 => 45,
+            72 => 34,
+            73 => match state {
+                3 => 51,
+                _ => 42,
             },
+            74 => 3,
+            76 => 28,
             83 => match state {
-                24 => 80,
-                _ => 75,
+                29 => 98,
+                _ => 46,
+            },
+            84 => match state {
+                26 => 89,
+                _ => 82,
             },
-            85 => 44,
             86 => match state {
-                0 => 31,
-                _ => 45,
+                0 => 35,
+                _ => 47,
             },
-            89 => 11,
-            90 => 32,
+            87 => 36,
+            88 => match state {
+                27 => 92,
+                _ => 87,
+            },
+            90 => 11,
+            91 => 37,
             _ => 0,
         }
     }
@@ -545465,19 +561530,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -545489,37 +561554,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -545531,7 +561596,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -545543,7 +561608,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -545561,43 +561626,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -545615,19 +561680,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -545639,7 +561704,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -545651,7 +561716,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -545663,25 +561728,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -545694,108 +561759,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -545807,43 +561872,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -545855,14 +561920,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -545880,248 +561945,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => __state_machine::SimulatedReduce::Accept,
             245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 125,
+                    nonterminal_produced: 124,
                 }
             }
-            246 => {
+            246 => __state_machine::SimulatedReduce::Accept,
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct Term0Parser {
+    pub(crate) struct TermParser {
         _priv: (),
     }
 
-    impl Term0Parser {
-        pub(crate) fn new() -> Term0Parser {
-            Term0Parser {
+    impl TermParser {
+        pub(crate) fn new() -> TermParser {
+            TermParser {
                 _priv: (),
             }
         }
@@ -546920,18 +563003,18 @@
                 __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             244 => {
-                // __Term0 = Term0 => ActionFn(14);
-                let __sym0 = __pop_Variant14(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action14::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             245 => {
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             246 => {
-                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Term = Term => ActionFn(16);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action16::<>(__sym0);
+                return Some(Ok(__nt));
             }
             247 => {
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
@@ -546939,6 +563022,15 @@
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -547589,10 +563681,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -547603,11 +563695,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -547618,11 +563710,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -547633,13 +563725,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -547650,11 +563742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -547665,10 +563757,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -547679,11 +563771,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -547694,10 +563786,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -547708,11 +563800,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -547723,10 +563815,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -547737,13 +563829,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -547754,13 +563846,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -547771,10 +563863,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -547785,14 +563877,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -547803,14 +563895,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -547821,10 +563913,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -547835,13 +563927,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -547852,13 +563944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -547869,10 +563961,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -547883,14 +563975,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -547901,14 +563993,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -547919,10 +564011,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -547933,13 +564025,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -547950,10 +564042,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -547964,11 +564056,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -547979,13 +564071,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -547996,14 +564088,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -548014,13 +564106,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -548031,10 +564123,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -548045,11 +564137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -548060,13 +564152,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -548077,14 +564169,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -548095,13 +564187,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -548112,10 +564204,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -548126,11 +564218,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -548141,13 +564233,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -548158,14 +564250,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -548176,13 +564268,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -548193,10 +564285,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -548207,11 +564299,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -548222,13 +564314,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -548239,14 +564331,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -548257,13 +564349,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -548274,10 +564366,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -548288,11 +564380,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -548303,13 +564395,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -548320,14 +564412,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -548338,13 +564430,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -548355,10 +564447,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -548369,11 +564461,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -548384,13 +564476,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -548401,14 +564493,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -548419,13 +564511,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -548436,10 +564528,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -548450,11 +564542,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -548465,13 +564557,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -548482,14 +564574,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -548500,10 +564592,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -548514,10 +564606,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -548528,14 +564620,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -548546,7 +564638,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -548554,7 +564646,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -548565,14 +564657,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -548583,7 +564675,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -548591,7 +564683,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -548602,11 +564694,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548617,11 +564709,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548632,11 +564724,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548647,11 +564739,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548662,11 +564754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548677,11 +564769,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548692,11 +564784,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548707,11 +564799,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -548722,11 +564814,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -548737,11 +564829,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -548752,11 +564844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -548767,11 +564859,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -548782,11 +564874,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -548797,11 +564889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -548812,11 +564904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -548827,11 +564919,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -548842,14 +564934,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -548860,11 +564952,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -548875,10 +564967,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -548889,13 +564981,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -548906,11 +564998,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -548921,11 +565013,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -548936,10 +565028,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -548950,13 +565042,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -548967,11 +565059,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -548982,11 +565074,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -548997,10 +565089,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -549011,13 +565103,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -549028,11 +565120,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -549043,11 +565135,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -549058,10 +565150,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -549072,13 +565164,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -549089,11 +565181,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -549104,11 +565196,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -549119,10 +565211,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -549133,13 +565225,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -549150,11 +565242,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -549165,11 +565257,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -549180,10 +565272,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -549194,13 +565286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -549211,11 +565303,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -549226,7 +565318,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -549237,7 +565329,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -549248,11 +565340,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -549263,10 +565355,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -549277,13 +565369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -549294,11 +565386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -549309,14 +565401,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -549327,11 +565419,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -549342,11 +565434,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -549357,14 +565449,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -549375,13 +565467,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -549392,13 +565484,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -549409,13 +565501,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -549426,11 +565518,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -549441,14 +565533,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -549459,11 +565551,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -549474,14 +565566,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -549492,11 +565584,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -549507,11 +565599,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -549522,10 +565614,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -549536,7 +565628,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -549544,7 +565636,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -549555,14 +565647,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -549573,11 +565665,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -549588,10 +565680,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -549602,7 +565694,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -549611,7 +565703,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -549622,7 +565714,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -549633,7 +565725,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -549644,7 +565736,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -549658,7 +565750,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -549669,7 +565761,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -549681,7 +565773,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -549692,7 +565784,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -549705,7 +565797,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -549716,7 +565808,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -549727,7 +565819,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -549738,7 +565830,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -549751,7 +565843,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -549762,7 +565854,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -549773,7 +565865,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -549784,7 +565876,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -549796,7 +565888,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -549807,7 +565899,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -549817,7 +565909,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -549828,11 +565920,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -549843,11 +565935,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -549858,10 +565950,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -549872,7 +565964,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -549881,36 +566008,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -549920,36 +566047,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -549960,18 +566087,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -549981,18 +566108,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -550003,18 +566130,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -550024,143 +566151,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -550170,18 +566297,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -550190,412 +566317,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -550607,18 +566734,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -550627,262 +566754,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -550891,18 +567018,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -550910,388 +567037,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -551304,249 +567431,264 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
         let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -551559,59 +567701,59 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__Term0::Term0Parser;
+pub(crate) use self::__parse__Term::TermParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__Type {
+mod __parse__Term0 {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -551693,43 +567835,217 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -166, -166, -166, -166, 5, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 7, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 2
-        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 6, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 7, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 4
-        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, -82, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 5
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 6
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 7
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, -84, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 8
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 60, 0, 0, -81, 0, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
         // State 9
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 66, -121, -121, 67, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 68, 69, 0, 70, 71, 72, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 73, -121, 0,
         // State 10
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 74, -111, 0, 0, -111, 75, -111, -111, -111, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 12
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 22, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 13
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 14
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
         // State 15
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 60, 0, 0, 0, 0, 61, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 17
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 60, 0, 0, -83, 0, 61, 84, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
         // State 18
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
+        // State 19
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
+        // State 20
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
+        // State 21
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
+        // State 22
+        0, 0, 0, 60, 0, 0, 87, 0, 61, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
+        // State 23
+        0, -166, -166, -166, -166, 5, -166, -166, -166, -166, -166, 0, 6, 0, -166, 0, 57, 0, -166, -166, 0, -166, -166, -166, 7, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
+        // State 24
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 25
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 26
+        0, 0, 74, -110, 0, 0, -110, 75, -110, -110, -110, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
+        // State 27
+        0, 66, -120, -120, 67, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 68, 69, 0, 70, 71, 72, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 73, -120, 0,
+        // State 28
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 29
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 30
+        53, 0, 0, 13, 0, 14, 0, 15, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 40, 0, 0, 41, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 55,
+        // State 31
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 32
+        0, 0, 0, 60, 0, 0, 0, 0, 61, -192, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 0, -192, 0,
+        // State 33
+        0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 34
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
+        // State 35
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
+        // State 36
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 37
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
+        // State 38
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
+        // State 39
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        // State 40
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
+        // State 41
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
+        // State 42
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
+        // State 43
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0,
+        // State 44
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0,
+        // State 45
+        0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 46
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
+        // State 47
+        0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 48
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
+        // State 49
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
+        // State 50
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
+        // State 51
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
+        // State 52
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
+        // State 53
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 54
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
+        // State 55
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
+        // State 56
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 57
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
+        // State 58
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
+        // State 59
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        // State 60
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        // State 61
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 62
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        // State 63
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        // State 64
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        // State 65
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        // State 66
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 67
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 68
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        // State 69
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        // State 70
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 71
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 72
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 73
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 74
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 75
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 76
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
+        // State 77
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
+        // State 78
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
+        // State 79
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
+        // State 80
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0,
+        // State 81
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 82
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 83
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 84
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
+        // State 85
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
+        // State 86
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
+        // State 87
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 88
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 89
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 90
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 91
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 92
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 93
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 94
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 95
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 101
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 105
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -551738,23 +568054,23 @@
         // State 0
         0,
         // State 1
-        0,
+        -166,
         // State 2
         0,
         // State 3
-        0,
+        -165,
         // State 4
         0,
         // State 5
-        -200,
+        0,
         // State 6
-        -246,
+        0,
         // State 7
         0,
         // State 8
-        -138,
+        0,
         // State 9
-        -199,
+        0,
         // State 10
         0,
         // State 11
@@ -551764,7 +568080,7 @@
         // State 13
         0,
         // State 14
-        -202,
+        0,
         // State 15
         0,
         // State 16
@@ -551772,25 +568088,258 @@
         // State 17
         0,
         // State 18
-        -201,
+        0,
+        // State 19
+        0,
+        // State 20
+        0,
+        // State 21
+        0,
+        // State 22
+        0,
+        // State 23
+        0,
+        // State 24
+        0,
+        // State 25
+        0,
+        // State 26
+        0,
+        // State 27
+        0,
+        // State 28
+        0,
+        // State 29
+        0,
+        // State 30
+        0,
+        // State 31
+        0,
+        // State 32
+        0,
+        // State 33
+        0,
+        // State 34
+        -199,
+        // State 35
+        -213,
+        // State 36
+        -248,
+        // State 37
+        -198,
+        // State 38
+        -211,
+        // State 39
+        -138,
+        // State 40
+        -210,
+        // State 41
+        -212,
+        // State 42
+        -169,
+        // State 43
+        0,
+        // State 44
+        0,
+        // State 45
+        0,
+        // State 46
+        -170,
+        // State 47
+        0,
+        // State 48
+        0,
+        // State 49
+        0,
+        // State 50
+        0,
+        // State 51
+        0,
+        // State 52
+        0,
+        // State 53
+        0,
+        // State 54
+        0,
+        // State 55
+        -167,
+        // State 56
+        0,
+        // State 57
+        -200,
+        // State 58
+        -124,
+        // State 59
+        0,
+        // State 60
+        0,
+        // State 61
+        0,
+        // State 62
+        0,
+        // State 63
+        0,
+        // State 64
+        0,
+        // State 65
+        0,
+        // State 66
+        0,
+        // State 67
+        0,
+        // State 68
+        0,
+        // State 69
+        0,
+        // State 70
+        0,
+        // State 71
+        0,
+        // State 72
+        0,
+        // State 73
+        0,
+        // State 74
+        0,
+        // State 75
+        0,
+        // State 76
+        0,
+        // State 77
+        0,
+        // State 78
+        0,
+        // State 79
+        -168,
+        // State 80
+        0,
+        // State 81
+        0,
+        // State 82
+        0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
+        // State 105
+        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            33 => 3,
+            15 => 7,
+            30 => 25,
+            33 => 28,
+            37 => 19,
+            38 => 20,
+            39 => 18,
+            41 => 47,
+            45 => 80,
             46 => match state {
-                4 => 16,
-                _ => 11,
+                31 => 102,
+                33 => 104,
+                _ => 87,
+            },
+            49 => match state {
+                6 => 15,
+                7 => 17,
+                13 => 22,
+                30 => 32,
+                _ => 8,
+            },
+            50 => 48,
+            51 => match state {
+                11 => 76,
+                12 => 77,
+                14 => 78,
+                19 => 84,
+                21 => 85,
+                _ => 49,
+            },
+            52 => match state {
+                20 => 27,
+                _ => 9,
             },
+            53 => match state {
+                18 => 26,
+                _ => 10,
+            },
+            55 => 34,
             60 => match state {
-                1 => 9,
-                _ => 5,
+                13 | 30 => 23,
+                2 => 43,
+                5 => 55,
+                16 | 25 => 81,
+                24 | 28 | 31 | 33 => 88,
+                29 => 96,
+                _ => 1,
+            },
+            62 => 44,
+            72 => 35,
+            73 => match state {
+                3 => 46,
+                _ => 42,
             },
-            75 => 1,
+            74 => 3,
+            76 => 29,
+            83 => match state {
+                30 => 100,
+                _ => 45,
+            },
+            84 => match state {
+                25 => 91,
+                _ => 82,
+            },
+            86 => 50,
             87 => match state {
-                0 => 6,
-                3 => 13,
-                _ => 12,
+                0 => 36,
+                _ => 51,
+            },
+            88 => match state {
+                28 => 94,
+                _ => 89,
             },
+            90 => 11,
+            91 => 37,
             _ => 0,
         }
     }
@@ -551885,7 +568434,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::Type;
+        type Success = ast::Expression;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -552906,19 +569455,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -552930,37 +569479,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -552972,7 +569521,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -552984,7 +569533,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -553002,43 +569551,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -553056,19 +569605,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -553080,7 +569629,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -553092,7 +569641,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -553104,25 +569653,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -553135,108 +569684,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -553248,43 +569797,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -553296,14 +569845,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -553321,248 +569870,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => __state_machine::SimulatedReduce::Accept,
             246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 126,
+                    nonterminal_produced: 125,
                 }
             }
-            247 => {
+            247 => __state_machine::SimulatedReduce::Accept,
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => {
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct TypeParser {
+    pub(crate) struct Term0Parser {
         _priv: (),
     }
 
-    impl TypeParser {
-        pub(crate) fn new() -> TypeParser {
-            TypeParser {
+    impl Term0Parser {
+        pub(crate) fn new() -> Term0Parser {
+            Term0Parser {
                 _priv: (),
             }
         }
@@ -553574,7 +570141,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::Type, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Expression, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -553625,7 +570192,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::Type,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Expression,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -554364,22 +570931,31 @@
                 __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             245 => {
-                // __Type = Type => ActionFn(1);
-                let __sym0 = __pop_Variant6(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action1::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             246 => {
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             247 => {
-                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Term0 = Term0 => ActionFn(15);
+                let __sym0 = __pop_Variant14(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action15::<>(__sym0);
+                return Some(Ok(__nt));
             }
             248 => {
                 __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -555030,10 +571606,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -555044,11 +571620,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -555059,11 +571635,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -555074,13 +571650,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -555091,11 +571667,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -555106,10 +571682,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -555120,11 +571696,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -555135,10 +571711,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -555149,11 +571725,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -555164,10 +571740,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -555178,13 +571754,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -555195,13 +571771,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -555212,10 +571788,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -555226,14 +571802,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -555244,14 +571820,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -555262,10 +571838,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -555276,13 +571852,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -555293,13 +571869,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -555310,10 +571886,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -555324,14 +571900,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -555342,14 +571918,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -555360,10 +571936,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -555374,13 +571950,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -555391,10 +571967,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -555405,11 +571981,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -555420,13 +571996,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -555437,14 +572013,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -555455,13 +572031,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -555472,10 +572048,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -555486,11 +572062,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -555501,13 +572077,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -555518,14 +572094,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -555536,13 +572112,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -555553,10 +572129,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -555567,11 +572143,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -555582,13 +572158,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -555599,14 +572175,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -555617,13 +572193,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -555634,10 +572210,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -555648,11 +572224,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -555663,13 +572239,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -555680,14 +572256,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -555698,13 +572274,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -555715,10 +572291,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -555729,11 +572305,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -555744,13 +572320,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -555761,14 +572337,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -555779,13 +572355,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -555796,10 +572372,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -555810,11 +572386,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -555825,13 +572401,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -555842,14 +572418,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -555860,13 +572436,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -555877,10 +572453,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -555891,11 +572467,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -555906,13 +572482,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -555923,14 +572499,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -555941,10 +572517,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -555955,10 +572531,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -555969,14 +572545,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -555987,7 +572563,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -555995,7 +572571,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -556006,14 +572582,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -556024,7 +572600,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -556032,7 +572608,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -556043,11 +572619,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556058,11 +572634,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556073,11 +572649,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556088,11 +572664,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556103,11 +572679,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556118,11 +572694,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556133,11 +572709,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556148,11 +572724,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -556163,11 +572739,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -556178,11 +572754,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -556193,11 +572769,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -556208,11 +572784,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -556223,11 +572799,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -556238,11 +572814,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -556253,11 +572829,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -556268,11 +572844,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -556283,14 +572859,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -556301,11 +572877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -556316,10 +572892,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -556330,13 +572906,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -556347,11 +572923,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -556362,11 +572938,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -556377,10 +572953,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -556391,13 +572967,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -556408,11 +572984,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -556423,11 +572999,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -556438,10 +573014,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -556452,13 +573028,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -556469,11 +573045,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -556484,11 +573060,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -556499,10 +573075,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -556513,13 +573089,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -556530,11 +573106,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -556545,11 +573121,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -556560,10 +573136,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -556574,13 +573150,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -556591,11 +573167,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -556606,11 +573182,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -556621,10 +573197,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -556635,13 +573211,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -556652,11 +573228,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -556667,7 +573243,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -556678,7 +573254,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -556689,11 +573265,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -556704,10 +573280,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -556718,13 +573294,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -556735,11 +573311,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -556750,14 +573326,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -556768,11 +573344,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -556783,11 +573359,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -556798,14 +573374,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -556816,13 +573392,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -556833,13 +573409,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -556850,13 +573426,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -556867,11 +573443,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -556882,14 +573458,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -556900,11 +573476,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -556915,14 +573491,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -556933,11 +573509,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -556948,11 +573524,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -556963,10 +573539,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -556977,7 +573553,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -556985,7 +573561,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -556996,14 +573572,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -557014,11 +573590,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -557029,10 +573605,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -557043,7 +573619,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -557052,7 +573628,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -557063,7 +573639,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -557074,7 +573650,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -557085,7 +573661,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -557099,7 +573675,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -557110,7 +573686,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -557122,7 +573698,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -557133,7 +573709,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -557146,7 +573722,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -557157,7 +573733,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -557168,7 +573744,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -557179,7 +573755,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -557192,7 +573768,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -557203,7 +573779,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -557214,7 +573790,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -557225,7 +573801,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -557237,7 +573813,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -557248,7 +573824,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -557258,7 +573834,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -557269,11 +573845,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -557284,11 +573860,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -557299,10 +573875,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -557313,7 +573889,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -557322,36 +573933,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -557361,36 +573972,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -557401,18 +574012,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -557422,18 +574033,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -557444,18 +574055,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -557465,143 +574076,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -557611,18 +574222,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -557631,412 +574242,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -558048,18 +574659,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -558068,262 +574679,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -558332,18 +574943,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -558351,388 +574962,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -558745,314 +575356,329 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
-        let __sym0 = __pop_Variant14(__symbols);
+        // __Type = Type => ActionFn(1);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        let __nt = super::__action1::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__Type::TypeParser;
+pub(crate) use self::__parse__Term0::Term0Parser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__UnaryOp {
+mod __parse__Type {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -559134,15 +575760,43 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
+        0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 5
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 6
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 7
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 8
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 9
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 10
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 11
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 12
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 13
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 14
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 15
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 16
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 17
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 18
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -559151,17 +575805,59 @@
         // State 0
         0,
         // State 1
-        -247,
+        0,
         // State 2
-        -206,
+        0,
         // State 3
-        -205,
+        0,
         // State 4
-        -207,
+        0,
+        // State 5
+        -202,
+        // State 6
+        -249,
+        // State 7
+        0,
+        // State 8
+        -138,
+        // State 9
+        -201,
+        // State 10
+        0,
+        // State 11
+        0,
+        // State 12
+        0,
+        // State 13
+        0,
+        // State 14
+        -204,
+        // State 15
+        0,
+        // State 16
+        0,
+        // State 17
+        0,
+        // State 18
+        -203,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            89 => 1,
+            33 => 3,
+            46 => match state {
+                4 => 16,
+                _ => 11,
+            },
+            60 => match state {
+                1 => 9,
+                _ => 5,
+            },
+            76 => 1,
+            88 => match state {
+                0 => 6,
+                3 => 13,
+                _ => 12,
+            },
             _ => 0,
         }
     }
@@ -559256,7 +575952,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::UnaryOp;
+        type Success = ast::Type;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -560277,19 +576973,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -560301,37 +576997,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -560343,7 +577039,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -560355,7 +577051,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -560373,43 +577069,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -560427,19 +577123,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -560451,7 +577147,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -560463,7 +577159,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -560475,25 +577171,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -560506,108 +577202,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -560619,43 +577315,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -560667,14 +577363,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -560692,260 +577388,278 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => __state_machine::SimulatedReduce::Accept,
             247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 127,
+                    nonterminal_produced: 126,
                 }
             }
-            248 => {
+            248 => __state_machine::SimulatedReduce::Accept,
+            249 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 128,
                 }
             }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub struct UnaryOpParser {
+    pub(crate) struct TypeParser {
         _priv: (),
     }
 
-    impl UnaryOpParser {
-        pub fn new() -> UnaryOpParser {
-            UnaryOpParser {
+    impl TypeParser {
+        pub(crate) fn new() -> TypeParser {
+            TypeParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub fn parse<
+        pub(crate) fn parse<
             __TOKEN: __ToTriple<>,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::UnaryOp, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::Type, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -560996,7 +577710,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::UnaryOp,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::Type,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -561738,18 +578452,27 @@
                 __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             246 => {
-                // __UnaryOp = UnaryOp => ActionFn(24);
-                let __sym0 = __pop_Variant60(__symbols);
-                let __start = __sym0.0;
-                let __end = __sym0.2;
-                let __nt = super::__action24::<>(__sym0);
-                return Some(Ok(__nt));
+                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             247 => {
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+                // __Type = Type => ActionFn(1);
+                let __sym0 = __pop_Variant6(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action1::<>(__sym0);
+                return Some(Ok(__nt));
+            }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -562401,10 +579124,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -562415,11 +579138,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -562430,11 +579153,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -562445,13 +579168,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -562462,11 +579185,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -562477,10 +579200,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -562491,11 +579214,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -562506,10 +579229,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -562520,11 +579243,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -562535,10 +579258,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -562549,13 +579272,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -562566,13 +579289,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -562583,10 +579306,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -562597,14 +579320,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -562615,14 +579338,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -562633,10 +579356,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -562647,13 +579370,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -562664,13 +579387,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -562681,10 +579404,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -562695,14 +579418,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -562713,14 +579436,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -562731,10 +579454,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -562745,13 +579468,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -562762,10 +579485,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -562776,11 +579499,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -562791,13 +579514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -562808,14 +579531,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -562826,13 +579549,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -562843,10 +579566,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -562857,11 +579580,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -562872,13 +579595,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -562889,14 +579612,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -562907,13 +579630,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -562924,10 +579647,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -562938,11 +579661,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -562953,13 +579676,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -562970,14 +579693,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -562988,13 +579711,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -563005,10 +579728,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -563019,11 +579742,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -563034,13 +579757,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -563051,14 +579774,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -563069,13 +579792,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -563086,10 +579809,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -563100,11 +579823,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -563115,13 +579838,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -563132,14 +579855,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -563150,13 +579873,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -563167,10 +579890,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -563181,11 +579904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -563196,13 +579919,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -563213,14 +579936,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -563231,13 +579954,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -563248,10 +579971,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -563262,11 +579985,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -563277,13 +580000,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -563294,14 +580017,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -563312,10 +580035,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -563326,10 +580049,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -563340,14 +580063,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -563358,7 +580081,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -563366,7 +580089,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -563377,14 +580100,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -563395,7 +580118,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -563403,7 +580126,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -563414,11 +580137,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563429,11 +580152,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563444,11 +580167,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563459,11 +580182,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563474,11 +580197,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563489,11 +580212,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563504,11 +580227,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563519,11 +580242,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -563534,11 +580257,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -563549,11 +580272,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -563564,11 +580287,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -563579,11 +580302,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -563594,11 +580317,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -563609,11 +580332,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -563624,11 +580347,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -563639,11 +580362,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -563654,14 +580377,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -563672,11 +580395,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -563687,10 +580410,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -563701,13 +580424,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -563718,11 +580441,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -563733,11 +580456,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -563748,10 +580471,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -563762,13 +580485,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -563779,11 +580502,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -563794,11 +580517,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -563809,10 +580532,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -563823,13 +580546,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -563840,11 +580563,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -563855,11 +580578,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -563870,10 +580593,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -563884,13 +580607,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -563901,11 +580624,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -563916,11 +580639,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -563931,10 +580654,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -563945,13 +580668,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -563962,11 +580685,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -563977,11 +580700,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -563992,10 +580715,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -564006,13 +580729,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -564023,11 +580746,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -564038,7 +580761,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -564049,7 +580772,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -564060,11 +580783,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -564075,10 +580798,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -564089,13 +580812,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -564106,11 +580829,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -564121,14 +580844,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -564139,11 +580862,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -564154,11 +580877,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -564169,14 +580892,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -564187,13 +580910,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -564204,13 +580927,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -564221,13 +580944,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -564238,11 +580961,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -564253,14 +580976,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -564271,11 +580994,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -564286,14 +581009,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -564304,11 +581027,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -564319,11 +581042,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -564334,10 +581057,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -564348,7 +581071,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -564356,7 +581079,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -564367,14 +581090,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -564385,11 +581108,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -564400,10 +581123,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -564414,7 +581137,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -564423,7 +581146,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -564434,7 +581157,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -564445,7 +581168,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -564456,7 +581179,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -564470,7 +581193,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -564481,7 +581204,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -564493,7 +581216,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -564504,7 +581227,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -564517,7 +581240,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -564528,7 +581251,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564539,7 +581262,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -564550,7 +581273,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -564563,7 +581286,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -564574,7 +581297,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564585,7 +581308,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -564596,7 +581319,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -564608,7 +581331,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -564619,7 +581342,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564629,7 +581352,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -564640,11 +581363,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -564655,11 +581378,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -564670,10 +581393,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -564684,7 +581407,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -564693,36 +581451,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564732,36 +581490,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564772,18 +581530,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564793,18 +581551,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -564815,18 +581573,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -564836,143 +581594,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -564982,18 +581740,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -565002,412 +581760,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -565419,18 +582177,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -565439,262 +582197,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -565703,18 +582461,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -565722,388 +582480,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -566116,314 +582874,329 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Type = Type => ActionFn(1);
-        let __sym0 = __pop_Variant6(__symbols);
+        // __UnaryOp = UnaryOp => ActionFn(25);
+        let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action1::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        let __nt = super::__action25::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub use self::__parse__UnaryOp::UnaryOpParser;
+pub(crate) use self::__parse__Type::TypeParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__ValueExpr {
+mod __parse__UnaryOp {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -566505,173 +583278,15 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0,
+        3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
         // State 1
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 4, 0, -163, 0, 0, 0, -163, -163, 0, -163, -163, -163, 5, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 3
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 5
-        0, 0, 0, 48, 0, 0, 0, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
-        // State 6
-        0, 54, -121, -121, 55, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 56, 57, 0, 58, 59, 60, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 61, -121, 0,
-        // State 7
-        0, 0, 62, -111, 0, 0, -111, 63, -111, -111, -111, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
-        // State 8
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 4, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 5, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, 0,
-        // State 9
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 10
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 18, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 11
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 12
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 13
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 14
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 15
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 16
-        45, 0, 0, 11, 0, 12, -82, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 17
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 18
-        0, 0, 0, 48, 0, 0, 72, 0, 49, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
-        // State 19
-        0, -164, -164, -164, -164, 17, -164, -164, -164, -164, -164, 0, 4, 0, -164, 0, 0, 0, -164, -164, 0, -164, -164, -164, 5, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, -164, -164, -164, 0,
-        // State 20
-        0, 0, 62, -110, 0, 0, -110, 63, -110, -110, -110, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
-        // State 21
-        0, 54, -120, -120, 55, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 56, 57, 0, 58, 59, 60, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 61, -120, 0,
-        // State 22
-        45, 0, 0, 11, 0, 12, -84, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 23
-        0, 0, 0, 48, 0, 0, -81, 0, 49, 75, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
-        // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
-        // State 25
-        0, 0, 0, 48, 0, 0, -83, 0, 49, 79, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0,
-        // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
-        // State 27
-        45, 0, 0, 11, 0, 12, 0, 13, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 33, 0, 0, 34, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 47,
-        // State 28
-        0, 0, 0, 48, 0, 0, 0, 0, 49, -190, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -190, 0,
-        // State 29
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
-        // State 30
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 31
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, 0, -209, 0, 0, 0, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, 0,
-        // State 32
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, 0, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
-        // State 33
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, 0, -208, 0, 0, 0, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, 0,
-        // State 34
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
-        // State 35
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
-        // State 36
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
-        // State 37
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
-        // State 38
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
-        // State 39
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
-        // State 40
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
-        // State 41
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
-        // State 42
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, 0, -195, 0, 0, 0, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, 0,
-        // State 43
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
-        // State 44
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
-        // State 45
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
-        // State 46
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
-        // State 47
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
-        // State 48
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
-        // State 49
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
-        // State 50
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
-        // State 51
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
-        // State 52
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
-        // State 53
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
-        // State 54
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
-        // State 55
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
-        // State 56
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
-        // State 57
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
-        // State 58
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
-        // State 59
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
-        // State 60
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
-        // State 61
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
-        // State 62
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
-        // State 63
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
-        // State 64
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
-        // State 65
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
-        // State 66
-        0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 67
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
-        // State 68
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
-        // State 69
-        0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 70
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
-        // State 71
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, 0, -194, 0, 0, 0, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, 0,
-        // State 72
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
-        // State 73
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
-        // State 74
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 75
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
-        // State 76
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 77
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 78
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 79
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 80
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 81
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 82
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 83
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -566680,234 +583295,17 @@
         // State 0
         0,
         // State 1
-        -164,
+        -250,
         // State 2
-        -163,
+        -208,
         // State 3
-        0,
+        -207,
         // State 4
-        0,
-        // State 5
-        0,
-        // State 6
-        0,
-        // State 7
-        0,
-        // State 8
-        0,
-        // State 9
-        0,
-        // State 10
-        0,
-        // State 11
-        0,
-        // State 12
-        0,
-        // State 13
-        0,
-        // State 14
-        0,
-        // State 15
-        0,
-        // State 16
-        0,
-        // State 17
-        0,
-        // State 18
-        0,
-        // State 19
-        0,
-        // State 20
-        0,
-        // State 21
-        0,
-        // State 22
-        0,
-        // State 23
-        0,
-        // State 24
-        0,
-        // State 25
-        0,
-        // State 26
-        0,
-        // State 27
-        0,
-        // State 28
-        0,
-        // State 29
-        -211,
-        // State 30
-        -248,
-        // State 31
         -209,
-        // State 32
-        -138,
-        // State 33
-        -208,
-        // State 34
-        -210,
-        // State 35
-        -167,
-        // State 36
-        -168,
-        // State 37
-        -165,
-        // State 38
-        0,
-        // State 39
-        0,
-        // State 40
-        0,
-        // State 41
-        0,
-        // State 42
-        0,
-        // State 43
-        0,
-        // State 44
-        0,
-        // State 45
-        0,
-        // State 46
-        0,
-        // State 47
-        0,
-        // State 48
-        0,
-        // State 49
-        0,
-        // State 50
-        -166,
-        // State 51
-        0,
-        // State 52
-        0,
-        // State 53
-        0,
-        // State 54
-        0,
-        // State 55
-        0,
-        // State 56
-        0,
-        // State 57
-        0,
-        // State 58
-        0,
-        // State 59
-        0,
-        // State 60
-        0,
-        // State 61
-        0,
-        // State 62
-        0,
-        // State 63
-        0,
-        // State 64
-        0,
-        // State 65
-        0,
-        // State 66
-        0,
-        // State 67
-        0,
-        // State 68
-        0,
-        // State 69
-        0,
-        // State 70
-        0,
-        // State 71
-        0,
-        // State 72
-        0,
-        // State 73
-        0,
-        // State 74
-        0,
-        // State 75
-        0,
-        // State 76
-        0,
-        // State 77
-        0,
-        // State 78
-        0,
-        // State 79
-        0,
-        // State 80
-        0,
-        // State 81
-        0,
-        // State 82
-        0,
-        // State 83
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            15 => 22,
-            30 => 26,
-            37 => 14,
-            38 => 15,
-            39 => 13,
-            41 => 69,
-            45 => 75,
-            49 => match state {
-                11 => 18,
-                16 => 23,
-                22 => 25,
-                27 => 28,
-                _ => 5,
-            },
-            50 => 38,
-            51 => match state {
-                9 => 64,
-                10 => 65,
-                12 => 67,
-                14 => 68,
-                17 => 70,
-                _ => 39,
-            },
-            52 => match state {
-                15 => 21,
-                _ => 6,
-            },
-            53 => match state {
-                13 => 20,
-                _ => 7,
-            },
-            55 => 40,
-            60 => match state {
-                0 => 1,
-                11 | 27 => 19,
-                3 => 37,
-                24 | 26 => 76,
-                _ => 8,
-            },
-            71 => 29,
-            72 => match state {
-                2 => 36,
-                _ => 35,
-            },
-            73 => 2,
-            82 => match state {
-                27 => 83,
-                _ => 66,
-            },
-            83 => match state {
-                26 => 79,
-                _ => 77,
-            },
-            85 => 41,
-            86 => 42,
-            89 => 9,
-            90 => match state {
-                0 => 30,
-                _ => 43,
-            },
+            90 => 1,
             _ => 0,
         }
     }
@@ -567002,7 +583400,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::ValueExpr;
+        type Success = ast::UnaryOp;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -568023,19 +584421,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -568047,37 +584445,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -568089,7 +584487,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -568101,7 +584499,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -568119,43 +584517,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -568173,19 +584571,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -568197,7 +584595,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -568209,7 +584607,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -568221,25 +584619,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -568252,108 +584650,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -568365,43 +584763,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -568413,14 +584811,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -568438,260 +584836,278 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => __state_machine::SimulatedReduce::Accept,
             248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 128,
+                    nonterminal_produced: 127,
+                }
+            }
+            249 => __state_machine::SimulatedReduce::Accept,
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
                 }
             }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct ValueExprParser {
+    pub struct UnaryOpParser {
         _priv: (),
     }
 
-    impl ValueExprParser {
-        pub(crate) fn new() -> ValueExprParser {
-            ValueExprParser {
+    impl UnaryOpParser {
+        pub fn new() -> UnaryOpParser {
+            UnaryOpParser {
                 _priv: (),
             }
         }
 
         #[allow(dead_code)]
-        pub(crate) fn parse<
+        pub fn parse<
             __TOKEN: __ToTriple<>,
             __TOKENS: IntoIterator<Item=__TOKEN>,
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::ValueExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::UnaryOp, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -568742,7 +585158,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::ValueExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::UnaryOp,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -569487,15 +585903,24 @@
                 __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             247 => {
-                // __ValueExpr = ValueExpr => ActionFn(25);
-                let __sym0 = __pop_Variant61(__symbols);
+                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            248 => {
+                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            249 => {
+                // __UnaryOp = UnaryOp => ActionFn(25);
+                let __sym0 = __pop_Variant60(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
                 let __nt = super::__action25::<>(__sym0);
                 return Some(Ok(__nt));
             }
-            248 => {
-                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             _ => panic!("invalid action code {}", __action)
         };
@@ -570147,10 +586572,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -570161,11 +586586,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -570176,11 +586601,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -570191,13 +586616,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -570208,11 +586633,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -570223,10 +586648,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -570237,11 +586662,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -570252,10 +586677,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -570266,11 +586691,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -570281,10 +586706,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -570295,13 +586720,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -570312,13 +586737,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -570329,10 +586754,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -570343,14 +586768,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -570361,14 +586786,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -570379,10 +586804,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -570393,13 +586818,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -570410,13 +586835,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -570427,10 +586852,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -570441,14 +586866,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -570459,14 +586884,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -570477,10 +586902,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -570491,13 +586916,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -570508,10 +586933,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -570522,11 +586947,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -570537,13 +586962,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -570554,14 +586979,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -570572,13 +586997,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -570589,10 +587014,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -570603,11 +587028,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -570618,13 +587043,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -570635,14 +587060,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -570653,13 +587078,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -570670,10 +587095,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -570684,11 +587109,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -570699,13 +587124,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -570716,14 +587141,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -570734,13 +587159,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -570751,10 +587176,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -570765,11 +587190,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -570780,13 +587205,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -570797,14 +587222,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -570815,13 +587240,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -570832,10 +587257,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -570846,11 +587271,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -570861,13 +587286,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -570878,14 +587303,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -570896,13 +587321,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -570913,10 +587338,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -570927,11 +587352,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -570942,13 +587367,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -570959,14 +587384,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -570977,13 +587402,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -570994,10 +587419,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -571008,11 +587433,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -571023,13 +587448,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -571040,14 +587465,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -571058,10 +587483,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -571072,10 +587497,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -571086,14 +587511,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -571104,7 +587529,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -571112,7 +587537,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -571123,14 +587548,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -571141,7 +587566,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -571149,7 +587574,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -571160,11 +587585,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571175,11 +587600,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571190,11 +587615,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571205,11 +587630,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571220,11 +587645,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571235,11 +587660,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571250,11 +587675,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571265,11 +587690,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -571280,11 +587705,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -571295,11 +587720,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -571310,11 +587735,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -571325,11 +587750,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -571340,11 +587765,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -571355,11 +587780,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -571370,11 +587795,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -571385,11 +587810,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -571400,14 +587825,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -571418,11 +587843,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -571433,10 +587858,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -571447,13 +587872,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -571464,11 +587889,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -571479,11 +587904,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -571494,10 +587919,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -571508,13 +587933,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -571525,11 +587950,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -571540,11 +587965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -571555,10 +587980,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -571569,13 +587994,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -571586,11 +588011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -571601,11 +588026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -571616,10 +588041,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -571630,13 +588055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -571647,11 +588072,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -571662,11 +588087,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -571677,10 +588102,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -571691,13 +588116,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -571708,11 +588133,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -571723,11 +588148,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -571738,10 +588163,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -571752,13 +588177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -571769,11 +588194,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -571784,7 +588209,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -571795,7 +588220,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -571806,11 +588231,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -571821,10 +588246,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -571835,13 +588260,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -571852,11 +588277,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -571867,14 +588292,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -571885,11 +588310,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -571900,11 +588325,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -571915,14 +588340,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -571933,13 +588358,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -571950,13 +588375,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -571967,13 +588392,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -571984,11 +588409,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -571999,14 +588424,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -572017,11 +588442,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -572032,14 +588457,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -572050,11 +588475,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -572065,11 +588490,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -572080,10 +588505,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -572094,7 +588519,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -572102,7 +588527,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -572113,14 +588538,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -572131,11 +588556,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -572146,10 +588571,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -572160,7 +588585,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -572169,7 +588594,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -572180,7 +588605,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -572191,7 +588616,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -572202,7 +588627,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -572216,7 +588641,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -572227,7 +588652,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -572239,7 +588664,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -572250,7 +588675,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -572263,7 +588688,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -572274,7 +588699,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -572285,7 +588710,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -572296,7 +588721,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -572309,7 +588734,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -572320,7 +588745,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -572331,7 +588756,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -572342,7 +588767,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -572354,7 +588779,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -572365,7 +588790,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -572375,7 +588800,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -572386,11 +588811,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -572401,11 +588826,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -572416,10 +588841,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -572430,7 +588855,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -572439,36 +588899,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -572478,36 +588938,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -572518,18 +588978,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -572539,18 +588999,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -572561,18 +589021,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -572582,143 +589042,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -572728,18 +589188,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -572748,412 +589208,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -573165,18 +589625,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -573185,262 +589645,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -573449,18 +589909,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -573468,388 +589928,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -573862,264 +590322,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -574132,44 +590607,44 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
-        let __sym0 = __pop_Variant60(__symbols);
+        // __ValueExpr = ValueExpr => ActionFn(26);
+        let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
-        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        let __nt = super::__action26::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 129)
     }
-    pub(crate) fn __reduce248<
+    pub(crate) fn __reduce251<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __WhileStmt = WhileStmt => ActionFn(11);
+        // __WhileStmt = WhileStmt => ActionFn(12);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action11::<>(__sym0);
+        let __nt = super::__action12::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (1, 128)
+        (1, 130)
     }
 }
-pub(crate) use self::__parse__ValueExpr::ValueExprParser;
+pub use self::__parse__UnaryOp::UnaryOpParser;
 
 #[rustfmt::skip]
 #[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
-mod __parse__WhileStmt {
+mod __parse__ValueExpr {
 
     use crate::tokens::Token;
     use crate::lexer::LexicalError;
@@ -574251,323 +590726,215 @@
     }
     const __ACTION: &[i16] = &[
         // State 0
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 1
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 2
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 4, 0, -165, 0, 0, 0, -165, -165, 0, -165, -165, -165, 5, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, 0,
         // State 3
-        0, 82, -121, -121, 83, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 84, 85, 0, 86, 87, 88, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 89, -121, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 4
-        0, 0, 90, -111, 0, 0, -111, 91, -111, -111, -111, 0, 0, -111, 92, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 5
-        0, -164, -164, -164, -164, 16, -164, -164, -164, -164, -164, 0, 17, -164, -164, 0, 0, -164, -164, -164, -164, -164, -164, -164, 18, -164, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -164, -164, -164, -164, 0,
+        0, 0, 0, 53, 0, 0, 0, 0, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 6
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 59, -121, -121, 60, 0, -121, -121, -121, -121, -121, 0, 0, 0, -121, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, 66, -121, 0,
         // State 7
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 19, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 67, -111, 0, 0, -111, 68, -111, -111, -111, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, -111, 0,
         // State 8
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, -166, -166, -166, -166, 17, -166, -166, -166, -166, -166, 0, 4, 0, -166, 0, 0, 0, -166, -166, 0, -166, -166, -166, 5, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, 0,
         // State 9
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 10
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 18, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 11
-        0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 72, 26, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 12
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 13
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 14
-        0, -163, -163, -163, -163, 0, -163, -163, -163, -163, -163, 0, 17, -163, -163, 0, 0, -163, -163, -163, -163, -163, -163, -163, 18, -163, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -163, -163, -163, -163, 0,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 15
-        69, 0, 0, 8, 0, 9, -82, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 16
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        50, 0, 0, 11, 0, 12, -82, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 17
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 18
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 53, 0, 0, 78, 0, 54, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 19
-        0, 0, 0, 77, 0, 0, 113, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, -166, -166, -166, -166, 17, -166, -166, -166, -166, -166, 0, 4, 0, -166, 0, 79, 0, -166, -166, 0, -166, -166, -166, 5, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
         // State 20
-        0, -164, -164, -164, -164, 16, -164, -164, -164, -164, -164, 0, 17, 0, -164, 0, 0, -164, -164, -164, 0, -164, -164, -164, 18, 0, -164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, -164, -164, -164, 0,
+        0, 0, 67, -110, 0, 0, -110, 68, -110, -110, -110, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, 0, -110, 0,
         // State 21
-        0, 0, 90, -110, 0, 0, -110, 91, -110, -110, -110, 0, 0, -110, 92, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        0, 59, -120, -120, 60, 0, -120, -120, -120, -120, -120, 0, 0, 0, -120, 0, 0, 0, 61, 62, 0, 63, 64, 65, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, 66, -120, 0,
         // State 22
-        0, 0, 0, 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        50, 0, 0, 11, 0, 12, -84, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 23
-        0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 72, 26, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 121, 0,
+        0, 0, 0, 53, 0, 0, -81, 0, 54, 82, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 24
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
         // State 25
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 53, 0, 0, -83, 0, 54, 86, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, 0, 0,
         // State 26
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 27
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, -176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
         // State 28
-        0, 82, -120, -120, 83, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 84, 85, 0, 86, 87, 88, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 89, -120, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 29
-        69, 0, 0, 8, 0, 9, -84, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 30
-        0, 0, 0, 77, 0, 0, -81, 0, 78, 126, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        50, 0, 0, 11, 0, 12, 0, 13, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 38, 0, 0, 39, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 52,
         // State 31
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 32
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        0, 0, 0, 53, 0, 0, 0, 0, 54, -192, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58, 0, -192, 0,
         // State 33
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -164, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 34
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, 0, -213, 0, 0, 0, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, 0,
         // State 35
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 36
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, 0, -211, 0, 0, 0, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, 0,
         // State 37
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -175, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, 0, -138, -138, -138, 0, -138, -138, 0, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
         // State 38
-        0, 0, 0, 77, 0, 0, -83, 0, 78, 134, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, 0, -210, 0, 0, 0, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, 0,
         // State 39
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, 0, -212, 0, 0, 0, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0,
         // State 40
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, 0, -169, 0, 0, 0, -169, -169, 0, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, 0,
         // State 41
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, 0, -170, 0, 0, 0, -170, -170, 0, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, 0,
         // State 42
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, 0, -167, 0, 0, 0, -167, -167, 0, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, 0,
         // State 43
-        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, 0, -117, 0, 0, 0, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, 0,
         // State 44
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, 0, -119, 0, 0, 0, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, 0,
         // State 45
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, 0, -199, 0, 0, 0, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, 0,
         // State 46
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, 0, -112, 0, 0, 0, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, 0,
         // State 47
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0,
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, 0, -197, 0, 0, 0, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, 0,
         // State 48
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, 0, -198, 0, 0, 0, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, 0,
         // State 49
-        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
         // State 50
-        0, 0, 0, 77, 0, 0, 0, 0, 78, -190, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, -190, 0,
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
         // State 51
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
         // State 52
-        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
         // State 53
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
         // State 54
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 81, 0, 0, 0,
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
         // State 55
-        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, 0, -168, 0, 0, 0, -168, -168, 0, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, 0,
         // State 56
-        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
         // State 57
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -146, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
         // State 58
-        69, 0, 0, 8, 0, 9, 0, 10, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 72, 0, 0, 73, 0, 0, 0, 0, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 75,
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
         // State 59
-        0, 0, 0, 77, 0, 0, 0, 0, 78, 0, 79, 0, 0, 0, 0, 0, 0, -145, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
         // State 60
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
         // State 61
-        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
         // State 62
-        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
         // State 63
-        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
         // State 64
-        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
         // State 65
-        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
         // State 66
-        0, -195, -195, -195, -195, 0, -195, -195, -195, -195, -195, 0, 0, -195, -195, 0, 0, -195, -195, -195, 0, -195, -195, -195, 0, -195, -195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, -195, -195, -195, 0,
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
         // State 67
-        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
         // State 68
-        -206, 0, 0, -206, 0, -206, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, -206, 0, 0, -206, 0, 0, 0, 0, 0, 0, -206, 0, 0, 0, 0, 0, 0, 0, -206,
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
         // State 69
-        -205, 0, 0, -205, 0, -205, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, -205, 0, 0, -205, 0, 0, 0, 0, 0, 0, -205, 0, 0, 0, 0, 0, 0, 0, -205,
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, 0, -116, 0, 0, 0, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, 0,
         // State 70
-        0, -209, -209, -209, -209, 0, -209, -209, -209, -209, -209, 0, 0, -209, -209, 0, 0, -209, -209, -209, 0, -209, -209, -209, 0, -209, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, -209, -209, -209, 0,
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, 0, -114, 0, 0, 0, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, 0,
         // State 71
-        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,
         // State 72
-        0, -208, -208, -208, -208, 0, -208, -208, -208, -208, -208, 0, 0, -208, -208, 0, 0, -208, -208, -208, 0, -208, -208, -208, 0, -208, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, -208, -208, -208, 0,
+        0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 73
-        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, 0, -115, 0, 0, 0, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, 0,
         // State 74
-        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, 0, -118, 0, 0, 0, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, 0,
         // State 75
-        0, 0, 0, 0, 0, 0, 0, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, 0, 0, -212, 0, 0, 0, 0, -212, 0, 0, 0, -212, 0, 0, 0, -212, 0,
+        0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 76
-        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, 0, -113, 0, 0, 0, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, 0,
         // State 77
-        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, 0, -196, 0, 0, 0, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, 0,
         // State 78
-        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 79
-        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, 0, -200, 0, 0, 0, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, 0,
         // State 80
-        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, 0, -124, 0, 0, 0, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, 0,
         // State 81
-        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
         // State 82
-        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0,
         // State 83
-        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 84
-        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
         // State 85
-        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
         // State 86
-        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 87
-        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 88
-        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 89
-        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 90
-        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
         // State 91
-        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
         // State 92
-        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
         // State 93
-        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 94
-        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
         // State 95
-        0, 0, 0, 0, 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 96
-        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 97
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 98
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
         // State 99
-        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
         // State 100
-        0, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -177, -177, -177, 0, 0, -177, 0, 0, 0, 0, -177, 0, 0, 0, -177, 0, 0, 0, -177, 0,
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 101
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 102
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 103
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         // State 104
-        0, 0, 0, 0, 0, 0, 0, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -155, -155, -155, 0, 0, -155, 0, 0, 0, 0, -155, 0, 0, 0, -155, 0, 0, 0, -155, 0,
-        // State 105
-        0, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -178, -178, -178, 0, 0, -178, 0, 0, 0, 0, -178, 0, 0, 0, -178, 0, 0, 0, -178, 0,
-        // State 106
-        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 107
-        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
-        // State 108
-        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
-        // State 109
-        0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 110
-        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, -165, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, -165, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
-        // State 111
-        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
-        // State 112
-        0, -194, -194, -194, -194, 0, -194, -194, -194, -194, -194, 0, 0, -194, -194, 0, 0, -194, -194, -194, 0, -194, -194, -194, 0, -194, -194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -194, -194, -194, -194, 0,
-        // State 113
-        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
-        // State 114
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 115
-        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 116
-        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
-        // State 117
-        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
-        // State 118
-        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
-        // State 119
-        0, 0, 0, 0, 0, 0, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -156, -156, -156, 0, 0, -156, 0, 0, 0, 0, -156, 0, 0, 0, -156, 0, 0, 0, -156, 0,
-        // State 120
-        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
-        // State 121
-        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
-        // State 122
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 123
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 124
-        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
-        // State 125
-        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
-        // State 126
-        0, -166, -166, -166, -166, 0, -166, -166, -166, -166, -166, 0, -166, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, -166, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
-        // State 127
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 136, 0,
-        // State 128
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 129
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 137, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
-        // State 130
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 131
-        0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, -142, -142, -142, 0, 0, -142, 0, 0, 0, 0, -142, 0, 0, 0, -142, 0, 0, 0, -142, 0,
-        // State 132
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 133
-        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
-        // State 134
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
-        // State 135
-        0, 0, 0, 0, 0, 0, -189, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, -189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -189, 0,
-        // State 136
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
-        // State 137
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 138
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -200, 0, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 139
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 140
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -171, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 141
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
-        // State 142
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
-        // State 143
-        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
-        // State 144
-        0, 0, 0, 0, 0, 0, 0, -141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -141, -141, 0, 0, -141, 0, 0, 0, 0, -141, 0, 0, 0, -141, 0, 0, 0, -141, 0,
-        // State 145
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -199, 0, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 146
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 147
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 148
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 149
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 150
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 151
-        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
-        // State 152
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 153
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 154
-        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 155
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 156
-        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 157
-        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-        // State 158
-        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     ];
     fn __action(state: i16, integer: usize) -> i16 {
         __ACTION[(state as usize) * 52 + integer]
@@ -574576,9 +590943,9 @@
         // State 0
         0,
         // State 1
-        0,
+        -166,
         // State 2
-        0,
+        -165,
         // State 3
         0,
         // State 4
@@ -574642,23 +591009,23 @@
         // State 33
         0,
         // State 34
-        0,
+        -213,
         // State 35
-        0,
+        -251,
         // State 36
-        0,
+        -211,
         // State 37
-        0,
+        -138,
         // State 38
-        0,
+        -210,
         // State 39
-        0,
+        -212,
         // State 40
-        0,
+        -169,
         // State 41
-        0,
+        -170,
         // State 42
-        0,
+        -167,
         // State 43
         0,
         // State 44
@@ -574684,7 +591051,7 @@
         // State 54
         0,
         // State 55
-        0,
+        -168,
         // State 56
         0,
         // State 57
@@ -574694,7 +591061,7 @@
         // State 59
         0,
         // State 60
-        -249,
+        0,
         // State 61
         0,
         // State 62
@@ -574724,7 +591091,7 @@
         // State 74
         0,
         // State 75
-        -212,
+        0,
         // State 76
         0,
         // State 77
@@ -574783,232 +591150,82 @@
         0,
         // State 104
         0,
-        // State 105
-        0,
-        // State 106
-        0,
-        // State 107
-        0,
-        // State 108
-        0,
-        // State 109
-        0,
-        // State 110
-        0,
-        // State 111
-        0,
-        // State 112
-        0,
-        // State 113
-        0,
-        // State 114
-        0,
-        // State 115
-        0,
-        // State 116
-        0,
-        // State 117
-        0,
-        // State 118
-        0,
-        // State 119
-        0,
-        // State 120
-        -80,
-        // State 121
-        0,
-        // State 122
-        0,
-        // State 123
-        0,
-        // State 124
-        0,
-        // State 125
-        0,
-        // State 126
-        0,
-        // State 127
-        0,
-        // State 128
-        0,
-        // State 129
-        0,
-        // State 130
-        0,
-        // State 131
-        0,
-        // State 132
-        0,
-        // State 133
-        0,
-        // State 134
-        0,
-        // State 135
-        0,
-        // State 136
-        0,
-        // State 137
-        0,
-        // State 138
-        0,
-        // State 139
-        0,
-        // State 140
-        0,
-        // State 141
-        0,
-        // State 142
-        0,
-        // State 143
-        0,
-        // State 144
-        0,
-        // State 145
-        0,
-        // State 146
-        0,
-        // State 147
-        0,
-        // State 148
-        0,
-        // State 149
-        0,
-        // State 150
-        0,
-        // State 151
-        0,
-        // State 152
-        0,
-        // State 153
-        0,
-        // State 154
-        0,
-        // State 155
-        0,
-        // State 156
-        0,
-        // State 157
-        0,
-        // State 158
-        0,
     ];
     fn __goto(state: i16, nt: usize) -> i16 {
         match nt {
-            1 => 22,
-            15 => 29,
-            30 => 39,
-            33 => 55,
-            36 => 97,
-            37 => 12,
-            38 => 13,
-            39 => 10,
-            40 => match state {
-                35 => 131,
-                46 => 143,
-                47 => 144,
-                54 => 151,
-                _ => 75,
-            },
-            41 => 109,
-            45 => 127,
+            15 => 22,
+            30 => 27,
+            33 => 28,
+            37 => 14,
+            38 => 15,
+            39 => 13,
+            41 => 75,
+            45 => 82,
             46 => match state {
-                56 => 155,
-                _ => 148,
+                31 => 101,
+                33 => 103,
+                _ => 86,
             },
             49 => match state {
-                8 => 19,
-                15 => 30,
-                17 => 31,
-                25 => 35,
-                27 => 37,
-                29 => 38,
-                34 => 41,
-                40 => 45,
-                42 => 46,
-                44 => 50,
-                51 => 54,
-                53 => 57,
-                58 => 59,
-                _ => 2,
+                11 => 18,
+                16 => 23,
+                22 => 25,
+                30 => 32,
+                _ => 5,
             },
-            50 => 61,
+            50 => 43,
             51 => match state {
-                6 => 93,
-                7 => 94,
-                9 => 96,
-                12 => 107,
-                18 => 111,
-                _ => 62,
+                9 => 69,
+                10 => 70,
+                12 => 73,
+                14 => 74,
+                17 => 76,
+                _ => 44,
             },
             52 => match state {
-                13 => 28,
-                _ => 3,
+                15 => 21,
+                _ => 6,
             },
             53 => match state {
-                10 => 21,
-                _ => 4,
-            },
-            55 => match state {
-                11 | 23 => 98,
-                _ => 63,
+                13 => 20,
+                _ => 7,
             },
-            58 => 99,
+            55 => 45,
             60 => match state {
-                8 | 34 | 40 | 44 | 53 | 58 => 20,
-                22 => 33,
-                16 => 110,
-                24 => 122,
-                26 => 123,
-                32 | 39 => 128,
-                36 => 132,
-                43 | 49 | 52 | 55..=56 => 138,
-                48 => 145,
-                _ => 5,
-            },
-            62 => 100,
-            64 => 101,
-            68 => 23,
-            71 => match state {
-                11 | 23 => 102,
-                22 => 114,
-                _ => 64,
-            },
-            72 => match state {
-                14 => 108,
-                _ => 92,
-            },
-            73 => 14,
-            75 => 48,
-            77 => 103,
-            78 => match state {
-                23 => 119,
-                _ => 104,
+                0 => 1,
+                11 | 30 => 19,
+                3 => 42,
+                24 | 27 => 83,
+                26 | 28 | 31 | 33 => 87,
+                29 => 95,
+                _ => 8,
             },
-            82 => match state {
-                34 => 130,
-                40 => 137,
-                44 => 142,
-                53 => 150,
-                58 => 156,
-                _ => 95,
+            62 => 71,
+            72 => 34,
+            73 => match state {
+                2 => 41,
+                _ => 40,
             },
+            74 => 2,
+            76 => 29,
             83 => match state {
-                39 => 134,
-                _ => 129,
+                30 => 99,
+                _ => 72,
             },
-            85 => 65,
-            86 => 66,
-            87 => match state {
-                43 => 139,
-                49 => 147,
-                55 => 152,
-                _ => 149,
+            84 => match state {
+                27 => 90,
+                _ => 84,
+            },
+            86 => 46,
+            87 => 47,
+            88 => match state {
+                28 => 93,
+                _ => 88,
             },
-            89 => 6,
-            90 => 67,
+            90 => 9,
             91 => match state {
-                0 => 60,
-                _ => 105,
+                0 => 35,
+                _ => 48,
             },
             _ => 0,
         }
@@ -575104,7 +591321,7 @@
         type Token = Token;
         type TokenIndex = usize;
         type Symbol = __Symbol<>;
-        type Success = ast::WhileStmt;
+        type Success = ast::ValueExpr;
         type StateIndex = i16;
         type Action = i16;
         type ReduceIndex = i16;
@@ -576125,19 +592342,19 @@
             }
             140 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 1,
                     nonterminal_produced: 62,
                 }
             }
             141 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 5,
                     nonterminal_produced: 62,
                 }
             }
             142 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 5,
                     nonterminal_produced: 63,
                 }
             }
@@ -576149,37 +592366,37 @@
             }
             144 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 7,
+                    states_to_pop: 6,
                     nonterminal_produced: 64,
                 }
             }
             145 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 3,
                     nonterminal_produced: 64,
                 }
             }
             146 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 7,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             147 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 6,
-                    nonterminal_produced: 64,
+                    nonterminal_produced: 65,
                 }
             }
             148 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 7,
                     nonterminal_produced: 65,
                 }
             }
             149 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 6,
                     nonterminal_produced: 65,
                 }
             }
@@ -576191,7 +592408,7 @@
             }
             151 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 66,
                 }
             }
@@ -576203,7 +592420,7 @@
             }
             153 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 67,
                 }
             }
@@ -576221,43 +592438,43 @@
             }
             156 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 6,
+                    states_to_pop: 1,
                     nonterminal_produced: 69,
                 }
             }
             157 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 69,
                 }
             }
             158 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 6,
                     nonterminal_produced: 70,
                 }
             }
             159 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 70,
                 }
             }
             160 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             161 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 70,
+                    nonterminal_produced: 71,
                 }
             }
             162 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 71,
                 }
             }
@@ -576275,19 +592492,19 @@
             }
             165 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 72,
                 }
             }
             166 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 73,
                 }
             }
             167 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 3,
                     nonterminal_produced: 73,
                 }
             }
@@ -576299,7 +592516,7 @@
             }
             169 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 74,
                 }
             }
@@ -576311,7 +592528,7 @@
             }
             171 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 0,
                     nonterminal_produced: 75,
                 }
             }
@@ -576323,25 +592540,25 @@
             }
             173 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 2,
                     nonterminal_produced: 76,
                 }
             }
             174 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 77,
                 }
             }
             175 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 77,
                 }
             }
             176 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 2,
                     nonterminal_produced: 78,
                 }
             }
@@ -576354,108 +592571,108 @@
             178 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             179 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             180 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
                 }
             }
             181 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             182 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 2,
-                    nonterminal_produced: 78,
+                    nonterminal_produced: 79,
                 }
             }
             183 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 8,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             184 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
+                    states_to_pop: 2,
                     nonterminal_produced: 79,
                 }
             }
             185 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 8,
                     nonterminal_produced: 80,
                 }
             }
             186 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
-                    nonterminal_produced: 81,
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
                 }
             }
             187 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 81,
                 }
             }
             188 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
+                    states_to_pop: 1,
                     nonterminal_produced: 82,
                 }
             }
             189 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 83,
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
                 }
             }
             190 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 4,
                     nonterminal_produced: 83,
                 }
             }
             191 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             192 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 3,
                     nonterminal_produced: 84,
                 }
             }
             193 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 85,
                 }
             }
             194 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 85,
                 }
             }
             195 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 86,
                 }
             }
@@ -576467,43 +592684,43 @@
             }
             197 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
-                    nonterminal_produced: 86,
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
                 }
             }
             198 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 2,
+                    states_to_pop: 1,
                     nonterminal_produced: 87,
                 }
             }
             199 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 3,
                     nonterminal_produced: 87,
                 }
             }
             200 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 5,
-                    nonterminal_produced: 87,
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
                 }
             }
             201 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 4,
-                    nonterminal_produced: 87,
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
                 }
             }
             202 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 5,
                     nonterminal_produced: 88,
                 }
             }
             203 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 0,
+                    states_to_pop: 4,
                     nonterminal_produced: 88,
                 }
             }
@@ -576515,14 +592732,14 @@
             }
             205 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 1,
+                    states_to_pop: 0,
                     nonterminal_produced: 89,
                 }
             }
             206 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 89,
+                    nonterminal_produced: 90,
                 }
             }
             207 => {
@@ -576540,248 +592757,266 @@
             209 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             210 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 90,
+                    nonterminal_produced: 91,
                 }
             }
             211 => {
                 __state_machine::SimulatedReduce::Reduce {
-                    states_to_pop: 3,
+                    states_to_pop: 1,
                     nonterminal_produced: 91,
                 }
             }
             212 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
-                    nonterminal_produced: 92,
+                    nonterminal_produced: 91,
                 }
             }
             213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 93,
                 }
             }
-            214 => {
+            215 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 94,
                 }
             }
-            215 => {
+            216 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 95,
                 }
             }
-            216 => {
+            217 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 96,
                 }
             }
-            217 => {
+            218 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 97,
                 }
             }
-            218 => {
+            219 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 98,
                 }
             }
-            219 => {
+            220 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 99,
                 }
             }
-            220 => {
+            221 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 100,
                 }
             }
-            221 => {
+            222 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 101,
                 }
             }
-            222 => {
+            223 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 102,
                 }
             }
-            223 => {
+            224 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 103,
                 }
             }
-            224 => {
+            225 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 104,
                 }
             }
-            225 => {
+            226 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 105,
                 }
             }
-            226 => {
+            227 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 106,
                 }
             }
-            227 => {
+            228 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 107,
                 }
             }
-            228 => {
+            229 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 108,
                 }
             }
-            229 => {
+            230 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 109,
                 }
             }
-            230 => {
+            231 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 110,
                 }
             }
-            231 => {
+            232 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 111,
                 }
             }
-            232 => {
+            233 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 112,
                 }
             }
-            233 => {
+            234 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 113,
                 }
             }
-            234 => {
+            235 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 114,
                 }
             }
-            235 => {
+            236 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 115,
                 }
             }
-            236 => {
+            237 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 116,
                 }
             }
-            237 => {
+            238 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 117,
                 }
             }
-            238 => {
+            239 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 118,
                 }
             }
-            239 => {
+            240 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 119,
                 }
             }
-            240 => {
+            241 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 120,
                 }
             }
-            241 => {
+            242 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 121,
                 }
             }
-            242 => {
+            243 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 122,
                 }
             }
-            243 => {
+            244 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 123,
                 }
             }
-            244 => {
+            245 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 124,
                 }
             }
-            245 => {
+            246 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 125,
                 }
             }
-            246 => {
+            247 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 126,
                 }
             }
-            247 => {
+            248 => {
                 __state_machine::SimulatedReduce::Reduce {
                     states_to_pop: 1,
                     nonterminal_produced: 127,
                 }
             }
-            248 => __state_machine::SimulatedReduce::Accept,
+            249 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 128,
+                }
+            }
+            250 => __state_machine::SimulatedReduce::Accept,
+            251 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 130,
+                }
+            }
             _ => panic!("invalid reduction index {}", __reduce_index)
         }
     }
-    pub(crate) struct WhileStmtParser {
+    pub(crate) struct ValueExprParser {
         _priv: (),
     }
 
-    impl WhileStmtParser {
-        pub(crate) fn new() -> WhileStmtParser {
-            WhileStmtParser {
+    impl ValueExprParser {
+        pub(crate) fn new() -> ValueExprParser {
+            ValueExprParser {
                 _priv: (),
             }
         }
@@ -576793,7 +593028,7 @@
         >(
             &self,
             __tokens0: __TOKENS,
-        ) -> Result<ast::WhileStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        ) -> Result<ast::ValueExpr, __lalrpop_util::ParseError<usize, Token, LexicalError>>
         {
             let __tokens = __tokens0.into_iter();
             let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
@@ -576844,7 +593079,7 @@
         __states: &mut alloc::vec::Vec<i16>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
-    ) -> Option<Result<ast::WhileStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    ) -> Option<Result<ast::ValueExpr,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
     {
         let (__pop_states, __nonterminal) = match __action {
             0 => {
@@ -577592,13 +593827,22 @@
                 __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
             }
             248 => {
-                // __WhileStmt = WhileStmt => ActionFn(11);
-                let __sym0 = __pop_Variant62(__symbols);
+                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                // __ValueExpr = ValueExpr => ActionFn(26);
+                let __sym0 = __pop_Variant61(__symbols);
                 let __start = __sym0.0;
                 let __end = __sym0.2;
-                let __nt = super::__action11::<>(__sym0);
+                let __nt = super::__action26::<>(__sym0);
                 return Some(Ok(__nt));
             }
+            251 => {
+                __reduce251(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
             _ => panic!("invalid action code {}", __action)
         };
         let __states_len = __states.len();
@@ -578249,10 +594493,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* =  => ActionFn(148);
+        // "*"* =  => ActionFn(151);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action148::<>(&__start, &__end);
+        let __nt = super::__action151::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (0, 0)
     }
@@ -578263,11 +594507,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"* = "*"+ => ActionFn(149);
+        // "*"* = "*"+ => ActionFn(152);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action149::<>(__sym0);
+        let __nt = super::__action152::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 0)
     }
@@ -578278,11 +594522,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*" => ActionFn(170);
+        // "*"+ = "*" => ActionFn(173);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action170::<>(__sym0);
+        let __nt = super::__action173::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (1, 1)
     }
@@ -578293,13 +594537,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "*"+ = "*"+, "*" => ActionFn(171);
+        // "*"+ = "*"+, "*" => ActionFn(174);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action171::<>(__sym0, __sym1);
+        let __nt = super::__action174::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant4(__nt), __end));
         (2, 1)
     }
@@ -578310,11 +594554,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? = "extern" => ActionFn(138);
+        // "extern"? = "extern" => ActionFn(141);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action138::<>(__sym0);
+        let __nt = super::__action141::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 2)
     }
@@ -578325,10 +594569,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "extern"? =  => ActionFn(139);
+        // "extern"? =  => ActionFn(142);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action139::<>(&__start, &__end);
+        let __nt = super::__action142::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 2)
     }
@@ -578339,11 +594583,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? = "mut" => ActionFn(150);
+        // "mut"? = "mut" => ActionFn(153);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action150::<>(__sym0);
+        let __nt = super::__action153::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 3)
     }
@@ -578354,10 +594598,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "mut"? =  => ActionFn(151);
+        // "mut"? =  => ActionFn(154);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action151::<>(&__start, &__end);
+        let __nt = super::__action154::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 3)
     }
@@ -578368,11 +594612,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? = "pub" => ActionFn(140);
+        // "pub"? = "pub" => ActionFn(143);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action140::<>(__sym0);
+        let __nt = super::__action143::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (1, 4)
     }
@@ -578383,10 +594627,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // "pub"? =  => ActionFn(141);
+        // "pub"? =  => ActionFn(144);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action141::<>(&__start, &__end);
+        let __nt = super::__action144::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant5(__nt), __end));
         (0, 4)
     }
@@ -578397,13 +594641,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>) = "->", Type => ActionFn(136);
+        // ("->" <Type>) = "->", Type => ActionFn(139);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action136::<>(__sym0, __sym1);
+        let __nt = super::__action139::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 5)
     }
@@ -578414,13 +594658,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? = "->", Type => ActionFn(223);
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action223::<>(__sym0, __sym1);
+        let __nt = super::__action226::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (2, 6)
     }
@@ -578431,10 +594675,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("->" <Type>)? =  => ActionFn(135);
+        // ("->" <Type>)? =  => ActionFn(138);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action135::<>(&__start, &__end);
+        let __nt = super::__action138::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
         (0, 6)
     }
@@ -578445,14 +594689,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(133);
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action133::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (3, 7)
     }
@@ -578463,14 +594707,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(232);
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant8(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action232::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (3, 8)
     }
@@ -578481,10 +594725,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("<" <Comma<Type>> ">")? =  => ActionFn(132);
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action132::<>(&__start, &__end);
+        let __nt = super::__action135::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant9(__nt), __end));
         (0, 8)
     }
@@ -578495,13 +594739,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>) = "else", Block => ActionFn(145);
+        // ("else" <Block>) = "else", Block => ActionFn(148);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action145::<>(__sym0, __sym1);
+        let __nt = super::__action148::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (2, 9)
     }
@@ -578512,13 +594756,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? = "else", Block => ActionFn(235);
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant10(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action235::<>(__sym0, __sym1);
+        let __nt = super::__action238::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (2, 10)
     }
@@ -578529,10 +594773,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("else" <Block>)? =  => ActionFn(144);
+        // ("else" <Block>)? =  => ActionFn(147);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action144::<>(&__start, &__end);
+        let __nt = super::__action147::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant11(__nt), __end));
         (0, 10)
     }
@@ -578543,14 +594787,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(127);
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action127::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (3, 11)
     }
@@ -578561,14 +594805,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(238);
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action238::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (3, 12)
     }
@@ -578579,10 +594823,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ("{" <Comma<Ident>> "}")? =  => ActionFn(126);
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action126::<>(&__start, &__end);
+        let __nt = super::__action129::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant13(__nt), __end));
         (0, 12)
     }
@@ -578593,13 +594837,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",") = Expression, "," => ActionFn(169);
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action169::<>(__sym0, __sym1);
+        let __nt = super::__action172::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 13)
     }
@@ -578610,10 +594854,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* =  => ActionFn(167);
+        // (<Expression> ",")* =  => ActionFn(170);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action167::<>(&__start, &__end);
+        let __nt = super::__action170::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (0, 14)
     }
@@ -578624,11 +594868,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(168);
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action168::<>(__sym0);
+        let __nt = super::__action171::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (1, 14)
     }
@@ -578639,13 +594883,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = Expression, "," => ActionFn(241);
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action241::<>(__sym0, __sym1);
+        let __nt = super::__action244::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (2, 15)
     }
@@ -578656,14 +594900,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(242);
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action242::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant15(__nt), __end));
         (3, 15)
     }
@@ -578674,13 +594918,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",") = FnParam, "," => ActionFn(181);
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action181::<>(__sym0, __sym1);
+        let __nt = super::__action184::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (2, 16)
     }
@@ -578691,10 +594935,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* =  => ActionFn(179);
+        // (<FnParam> ",")* =  => ActionFn(182);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action179::<>(&__start, &__end);
+        let __nt = super::__action182::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (0, 17)
     }
@@ -578705,11 +594949,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(180);
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action180::<>(__sym0);
+        let __nt = super::__action183::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (1, 17)
     }
@@ -578720,13 +594964,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = FnParam, "," => ActionFn(245);
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action245::<>(__sym0, __sym1);
+        let __nt = super::__action248::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (2, 18)
     }
@@ -578737,14 +594981,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(246);
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action246::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant17(__nt), __end));
         (3, 18)
     }
@@ -578755,13 +594999,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",") = Ident, "," => ActionFn(194);
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action194::<>(__sym0, __sym1);
+        let __nt = super::__action197::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 19)
     }
@@ -578772,10 +595016,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* =  => ActionFn(192);
+        // (<Ident> ",")* =  => ActionFn(195);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action192::<>(&__start, &__end);
+        let __nt = super::__action195::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 20)
     }
@@ -578786,11 +595030,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(193);
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action193::<>(__sym0);
+        let __nt = super::__action196::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 20)
     }
@@ -578801,13 +595045,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = Ident, "," => ActionFn(249);
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action249::<>(__sym0, __sym1);
+        let __nt = super::__action252::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 21)
     }
@@ -578818,14 +595062,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(250);
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action250::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 21)
     }
@@ -578836,13 +595080,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::") = Ident, "::" => ActionFn(189);
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action189::<>(__sym0, __sym1);
+        let __nt = super::__action192::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (2, 22)
     }
@@ -578853,10 +595097,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* =  => ActionFn(187);
+        // (<Ident> "::")* =  => ActionFn(190);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action187::<>(&__start, &__end);
+        let __nt = super::__action190::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (0, 23)
     }
@@ -578867,11 +595111,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(188);
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action188::<>(__sym0);
+        let __nt = super::__action191::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (1, 23)
     }
@@ -578882,13 +595126,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = Ident, "::" => ActionFn(253);
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action253::<>(__sym0, __sym1);
+        let __nt = super::__action256::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (2, 24)
     }
@@ -578899,14 +595143,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(254);
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action254::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant19(__nt), __end));
         (3, 24)
     }
@@ -578917,13 +595161,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",") = StructField, "," => ActionFn(186);
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action186::<>(__sym0, __sym1);
+        let __nt = super::__action189::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
         (2, 25)
     }
@@ -578934,10 +595178,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* =  => ActionFn(184);
+        // (<StructField> ",")* =  => ActionFn(187);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action184::<>(&__start, &__end);
+        let __nt = super::__action187::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (0, 26)
     }
@@ -578948,11 +595192,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(185);
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action185::<>(__sym0);
+        let __nt = super::__action188::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (1, 26)
     }
@@ -578963,13 +595207,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = StructField, "," => ActionFn(257);
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action257::<>(__sym0, __sym1);
+        let __nt = super::__action260::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (2, 27)
     }
@@ -578980,14 +595224,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(258);
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action258::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant21(__nt), __end));
         (3, 27)
     }
@@ -578998,13 +595242,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",") = StructInitField, "," => ActionFn(176);
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action176::<>(__sym0, __sym1);
+        let __nt = super::__action179::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
         (2, 28)
     }
@@ -579015,10 +595259,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* =  => ActionFn(174);
+        // (<StructInitField> ",")* =  => ActionFn(177);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action174::<>(&__start, &__end);
+        let __nt = super::__action177::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (0, 29)
     }
@@ -579029,11 +595273,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(175);
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action175::<>(__sym0);
+        let __nt = super::__action178::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (1, 29)
     }
@@ -579044,13 +595288,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(261);
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action261::<>(__sym0, __sym1);
+        let __nt = super::__action264::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (2, 30)
     }
@@ -579061,14 +595305,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(262);
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action262::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant23(__nt), __end));
         (3, 30)
     }
@@ -579079,13 +595323,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",") = Type, "," => ActionFn(166);
+        // (<Type> ",") = Type, "," => ActionFn(169);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action166::<>(__sym0, __sym1);
+        let __nt = super::__action169::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
         (2, 31)
     }
@@ -579096,10 +595340,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* =  => ActionFn(164);
+        // (<Type> ",")* =  => ActionFn(167);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action164::<>(&__start, &__end);
+        let __nt = super::__action167::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (0, 32)
     }
@@ -579110,11 +595354,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")* = (<Type> ",")+ => ActionFn(165);
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action165::<>(__sym0);
+        let __nt = super::__action168::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (1, 32)
     }
@@ -579125,13 +595369,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = Type, "," => ActionFn(265);
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action265::<>(__sym0, __sym1);
+        let __nt = super::__action268::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (2, 33)
     }
@@ -579142,14 +595386,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(266);
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action266::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant24(__nt), __end));
         (3, 33)
     }
@@ -579160,10 +595404,8211 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @L =  => ActionFn(161);
+        // @L =  => ActionFn(164);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action161::<>(&__start, &__end);
+        let __nt = super::__action164::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant25(__nt), __end));
+        (0, 34)
+    }
+    pub(crate) fn __reduce58<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // @R =  => ActionFn(163);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action163::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant25(__nt), __end));
+        (0, 35)
+    }
+    pub(crate) fn __reduce59<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant26(__nt), __end));
+        (3, 36)
+    }
+    pub(crate) fn __reduce60<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant14(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant26(__nt), __end));
+        (4, 36)
+    }
+    pub(crate) fn __reduce61<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant26(__nt), __end));
+        (3, 36)
+    }
+    pub(crate) fn __reduce62<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant58(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant48(__symbols);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant26(__nt), __end));
+        (4, 36)
+    }
+    pub(crate) fn __reduce63<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action340::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce64<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action341::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce65<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action342::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce66<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action343::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce67<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action344::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce68<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action345::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce69<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action346::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce70<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action347::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 37)
+    }
+    pub(crate) fn __reduce71<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinarySecondLvlOp = "/" => ActionFn(348);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action348::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 38)
+    }
+    pub(crate) fn __reduce72<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinarySecondLvlOp = "*" => ActionFn(349);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action349::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 38)
+    }
+    pub(crate) fn __reduce73<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinarySecondLvlOp = "%" => ActionFn(350);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action350::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 38)
+    }
+    pub(crate) fn __reduce74<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action351::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 39)
+    }
+    pub(crate) fn __reduce75<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action352::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 39)
+    }
+    pub(crate) fn __reduce76<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action353::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 39)
+    }
+    pub(crate) fn __reduce77<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action354::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 39)
+    }
+    pub(crate) fn __reduce78<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action355::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 39)
+    }
+    pub(crate) fn __reduce79<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant45(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
+        (3, 40)
+    }
+    pub(crate) fn __reduce80<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Expression> = Expression => ActionFn(400);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action400::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant28(__nt), __end));
+        (1, 41)
+    }
+    pub(crate) fn __reduce81<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Expression> =  => ActionFn(401);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action401::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant28(__nt), __end));
+        (0, 41)
+    }
+    pub(crate) fn __reduce82<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant15(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action402::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant28(__nt), __end));
+        (2, 41)
+    }
+    pub(crate) fn __reduce83<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
+        let __sym0 = __pop_Variant15(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action403::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant28(__nt), __end));
+        (1, 41)
+    }
+    pub(crate) fn __reduce84<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<FnParam> = FnParam => ActionFn(406);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action406::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant29(__nt), __end));
+        (1, 42)
+    }
+    pub(crate) fn __reduce85<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<FnParam> =  => ActionFn(407);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action407::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant29(__nt), __end));
+        (0, 42)
+    }
+    pub(crate) fn __reduce86<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant16(__symbols);
+        let __sym0 = __pop_Variant17(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action408::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant29(__nt), __end));
+        (2, 42)
+    }
+    pub(crate) fn __reduce87<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
+        let __sym0 = __pop_Variant17(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action409::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant29(__nt), __end));
+        (1, 42)
+    }
+    pub(crate) fn __reduce88<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Ident> = Ident => ActionFn(410);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action410::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (1, 43)
+    }
+    pub(crate) fn __reduce89<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Ident> =  => ActionFn(411);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action411::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (0, 43)
+    }
+    pub(crate) fn __reduce90<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action412::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (2, 43)
+    }
+    pub(crate) fn __reduce91<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action413::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (1, 43)
+    }
+    pub(crate) fn __reduce92<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructField> = StructField => ActionFn(426);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action426::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant30(__nt), __end));
+        (1, 44)
+    }
+    pub(crate) fn __reduce93<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructField> =  => ActionFn(427);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action427::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant30(__nt), __end));
+        (0, 44)
+    }
+    pub(crate) fn __reduce94<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant20(__symbols);
+        let __sym0 = __pop_Variant21(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action428::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant30(__nt), __end));
+        (2, 44)
+    }
+    pub(crate) fn __reduce95<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
+        let __sym0 = __pop_Variant21(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action429::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant30(__nt), __end));
+        (1, 44)
+    }
+    pub(crate) fn __reduce96<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action430::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant31(__nt), __end));
+        (1, 45)
+    }
+    pub(crate) fn __reduce97<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructInitField> =  => ActionFn(431);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action431::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant31(__nt), __end));
+        (0, 45)
+    }
+    pub(crate) fn __reduce98<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant22(__symbols);
+        let __sym0 = __pop_Variant23(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action432::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant31(__nt), __end));
+        (2, 45)
+    }
+    pub(crate) fn __reduce99<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
+        let __sym0 = __pop_Variant23(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action433::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant31(__nt), __end));
+        (1, 45)
+    }
+    pub(crate) fn __reduce100<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Type> = Type => ActionFn(434);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action434::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
+        (1, 46)
+    }
+    pub(crate) fn __reduce101<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Type> =  => ActionFn(435);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action435::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
+        (0, 46)
+    }
+    pub(crate) fn __reduce102<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant24(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action436::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
+        (2, 46)
+    }
+    pub(crate) fn __reduce103<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
+        let __sym0 = __pop_Variant24(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action437::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
+        (1, 46)
+    }
+    pub(crate) fn __reduce104<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
+        assert!(__symbols.len() >= 7);
+        let __sym6 = __pop_Variant0(__symbols);
+        let __sym5 = __pop_Variant14(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant6(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym6.2;
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        __symbols.push((__start, __Symbol::Variant32(__nt), __end));
+        (7, 47)
+    }
+    pub(crate) fn __reduce105<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // DoubleColon<Ident> = Ident => ActionFn(414);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action414::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (1, 48)
+    }
+    pub(crate) fn __reduce106<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // DoubleColon<Ident> =  => ActionFn(415);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action415::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (0, 48)
+    }
+    pub(crate) fn __reduce107<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action416::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (2, 48)
+    }
+    pub(crate) fn __reduce108<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action417::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (1, 48)
+    }
+    pub(crate) fn __reduce109<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant27(__symbols);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 49)
+    }
+    pub(crate) fn __reduce110<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression = Expression3 => ActionFn(82);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action82::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 49)
+    }
+    pub(crate) fn __reduce111<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression0 = Term => ActionFn(71);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action71::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 50)
+    }
+    pub(crate) fn __reduce112<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 51)
+    }
+    pub(crate) fn __reduce113<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression1 = "&", Expression1 => ActionFn(73);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action73::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (2, 51)
+    }
+    pub(crate) fn __reduce114<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression1 = "*", Expression1 => ActionFn(74);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action74::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (2, 51)
+    }
+    pub(crate) fn __reduce115<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant60(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action75::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (2, 51)
+    }
+    pub(crate) fn __reduce116<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression1 = Expression0 => ActionFn(76);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action76::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 51)
+    }
+    pub(crate) fn __reduce117<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant27(__symbols);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 52)
+    }
+    pub(crate) fn __reduce118<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression2 = Expression1 => ActionFn(78);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action78::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 52)
+    }
+    pub(crate) fn __reduce119<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant27(__symbols);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 53)
+    }
+    pub(crate) fn __reduce120<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression3 = Expression2 => ActionFn(80);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action80::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 53)
+    }
+    pub(crate) fn __reduce121<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression? = Expression => ActionFn(149);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action149::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant33(__nt), __end));
+        (1, 54)
+    }
+    pub(crate) fn __reduce122<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Expression? =  => ActionFn(150);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action150::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant33(__nt), __end));
+        (0, 54)
+    }
+    pub(crate) fn __reduce123<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant28(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant34(__nt), __end));
+        (4, 55)
+    }
+    pub(crate) fn __reduce124<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // FnParam = Ident, ":", Type => ActionFn(359);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
+        (3, 56)
+    }
+    pub(crate) fn __reduce125<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // FnParam? = FnParam => ActionFn(180);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action180::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant35(__nt), __end));
+        (1, 57)
+    }
+    pub(crate) fn __reduce126<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // FnParam? =  => ActionFn(181);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action181::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant35(__nt), __end));
+        (0, 57)
+    }
+    pub(crate) fn __reduce127<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant10(__symbols);
+        let __sym3 = __pop_Variant14(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant36(__nt), __end));
+        (5, 58)
+    }
+    pub(crate) fn __reduce128<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
+        assert!(__symbols.len() >= 7);
+        let __sym6 = __pop_Variant10(__symbols);
+        let __sym5 = __pop_Variant14(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant14(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym6.2;
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        __symbols.push((__start, __Symbol::Variant36(__nt), __end));
+        (7, 58)
+    }
+    pub(crate) fn __reduce129<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
+        assert!(__symbols.len() >= 10);
+        let __sym9 = __pop_Variant10(__symbols);
+        let __sym8 = __pop_Variant6(__symbols);
+        let __sym7 = __pop_Variant0(__symbols);
+        let __sym6 = __pop_Variant0(__symbols);
+        let __sym5 = __pop_Variant29(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant18(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym9.2;
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (10, 59)
+    }
+    pub(crate) fn __reduce130<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
+        assert!(__symbols.len() >= 8);
+        let __sym7 = __pop_Variant10(__symbols);
+        let __sym6 = __pop_Variant0(__symbols);
+        let __sym5 = __pop_Variant29(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant18(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym7.2;
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (8, 59)
+    }
+    pub(crate) fn __reduce131<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
+        assert!(__symbols.len() >= 9);
+        let __sym8 = __pop_Variant10(__symbols);
+        let __sym7 = __pop_Variant6(__symbols);
+        let __sym6 = __pop_Variant0(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant29(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant18(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym8.2;
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (9, 59)
+    }
+    pub(crate) fn __reduce132<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
+        assert!(__symbols.len() >= 7);
+        let __sym6 = __pop_Variant10(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant29(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant18(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym6.2;
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (7, 59)
+    }
+    pub(crate) fn __reduce133<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
+        assert!(__symbols.len() >= 9);
+        let __sym8 = __pop_Variant10(__symbols);
+        let __sym7 = __pop_Variant6(__symbols);
+        let __sym6 = __pop_Variant0(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant29(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant18(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym8.2;
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (9, 59)
+    }
+    pub(crate) fn __reduce134<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
+        assert!(__symbols.len() >= 7);
+        let __sym6 = __pop_Variant10(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant29(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant18(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym6.2;
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (7, 59)
+    }
+    pub(crate) fn __reduce135<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
+        assert!(__symbols.len() >= 8);
+        let __sym7 = __pop_Variant10(__symbols);
+        let __sym6 = __pop_Variant6(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant29(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym7.2;
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (8, 59)
+    }
+    pub(crate) fn __reduce136<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
+        assert!(__symbols.len() >= 6);
+        let __sym5 = __pop_Variant10(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant29(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym5.2;
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (6, 59)
+    }
+    pub(crate) fn __reduce137<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Ident = "identifier" => ActionFn(370);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action370::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant18(__nt), __end));
+        (1, 60)
+    }
+    pub(crate) fn __reduce138<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Ident? = Ident => ActionFn(193);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action193::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant38(__nt), __end));
+        (1, 61)
+    }
+    pub(crate) fn __reduce139<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Ident? =  => ActionFn(194);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action194::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant38(__nt), __end));
+        (0, 61)
+    }
+    pub(crate) fn __reduce140<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant10(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant10(__symbols);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant39(__nt), __end));
+        (5, 63)
+    }
+    pub(crate) fn __reduce143<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block => ActionFn(374);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant10(__symbols);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant39(__nt), __end));
+        (3, 63)
+    }
+    pub(crate) fn __reduce144<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
+        assert!(__symbols.len() >= 6);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant12(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant12(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym5.2;
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        __symbols.push((__start, __Symbol::Variant40(__nt), __end));
+        (6, 64)
+    }
+    pub(crate) fn __reduce145<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant12(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant40(__nt), __end));
+        (3, 64)
+    }
+    pub(crate) fn __reduce146<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
+        assert!(__symbols.len() >= 7);
+        let __sym6 = __pop_Variant14(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant6(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant18(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym6.2;
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (7, 65)
+    }
+    pub(crate) fn __reduce147<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
+        assert!(__symbols.len() >= 6);
+        let __sym5 = __pop_Variant14(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant6(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym5.2;
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (6, 65)
+    }
+    pub(crate) fn __reduce148<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
+        assert!(__symbols.len() >= 7);
+        let __sym6 = __pop_Variant58(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant6(__symbols);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant18(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym6.2;
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (7, 65)
+    }
+    pub(crate) fn __reduce149<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
+        assert!(__symbols.len() >= 6);
+        let __sym5 = __pop_Variant58(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant6(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym5.2;
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (6, 65)
+    }
+    pub(crate) fn __reduce150<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<Import> = Import => ActionFn(126);
+        let __sym0 = __pop_Variant40(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action126::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant42(__nt), __end));
+        (1, 66)
+    }
+    pub(crate) fn __reduce151<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<Import> = List<Import>, Import => ActionFn(127);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant40(__symbols);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action127::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant42(__nt), __end));
+        (2, 66)
+    }
+    pub(crate) fn __reduce152<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<Import>? = List<Import> => ActionFn(124);
+        let __sym0 = __pop_Variant42(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action124::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant43(__nt), __end));
+        (1, 67)
+    }
+    pub(crate) fn __reduce153<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<Import>? =  => ActionFn(125);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action125::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant43(__nt), __end));
+        (0, 67)
+    }
+    pub(crate) fn __reduce154<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action122::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant44(__nt), __end));
+        (1, 68)
+    }
+    pub(crate) fn __reduce155<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant47(__symbols);
+        let __sym0 = __pop_Variant44(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action123::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant44(__nt), __end));
+        (2, 68)
+    }
+    pub(crate) fn __reduce156<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<Statement> = Statement => ActionFn(156);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action156::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant45(__nt), __end));
+        (1, 69)
+    }
+    pub(crate) fn __reduce157<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant55(__symbols);
+        let __sym0 = __pop_Variant45(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action157::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant45(__nt), __end));
+        (2, 69)
+    }
+    pub(crate) fn __reduce158<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
+        assert!(__symbols.len() >= 6);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant44(__symbols);
+        let __sym3 = __pop_Variant42(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym5.2;
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (6, 70)
+    }
+    pub(crate) fn __reduce159<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant44(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (5, 70)
+    }
+    pub(crate) fn __reduce160<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Function => ActionFn(118);
+        let __sym0 = __pop_Variant37(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action118::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
+    }
+    pub(crate) fn __reduce161<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Constant => ActionFn(119);
+        let __sym0 = __pop_Variant32(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action119::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
+    }
+    pub(crate) fn __reduce162<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Struct => ActionFn(120);
+        let __sym0 = __pop_Variant56(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action120::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
+    }
+    pub(crate) fn __reduce163<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ModuleStatement = Module => ActionFn(121);
+        let __sym0 = __pop_Variant46(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action121::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 71)
+    }
+    pub(crate) fn __reduce164<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathExpr = Ident, PathSegments => ActionFn(420);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant50(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action420::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (2, 72)
+    }
+    pub(crate) fn __reduce165<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathExpr = Ident => ActionFn(421);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action421::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 72)
+    }
+    pub(crate) fn __reduce166<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegment = ".", Ident => ActionFn(46);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action46::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (2, 73)
+    }
+    pub(crate) fn __reduce167<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (3, 73)
+    }
+    pub(crate) fn __reduce168<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments = PathSegment => ActionFn(44);
+        let __sym0 = __pop_Variant49(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action44::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 74)
+    }
+    pub(crate) fn __reduce169<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant49(__symbols);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action45::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (2, 74)
+    }
+    pub(crate) fn __reduce170<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments? = PathSegments => ActionFn(158);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action158::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (1, 75)
+    }
+    pub(crate) fn __reduce171<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // PathSegments? =  => ActionFn(159);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action159::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant51(__nt), __end));
+        (0, 75)
+    }
+    pub(crate) fn __reduce172<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // RefType = "&" => ActionFn(109);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action109::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 76)
+    }
+    pub(crate) fn __reduce173<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // RefType = "&", "mut" => ActionFn(110);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action110::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (2, 76)
+    }
+    pub(crate) fn __reduce174<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // RefType? = RefType => ActionFn(161);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action161::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (1, 77)
+    }
+    pub(crate) fn __reduce175<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // RefType? =  => ActionFn(162);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action162::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant53(__nt), __end));
+        (0, 77)
+    }
+    pub(crate) fn __reduce176<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ReturnStmt = "return", Expression => ActionFn(404);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action404::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (2, 78)
+    }
+    pub(crate) fn __reduce177<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ReturnStmt = "return" => ActionFn(405);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action405::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 78)
+    }
+    pub(crate) fn __reduce178<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = IfStmt => ActionFn(49);
+        let __sym0 = __pop_Variant39(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action49::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
+    }
+    pub(crate) fn __reduce179<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = WhileStmt => ActionFn(50);
+        let __sym0 = __pop_Variant62(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action50::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
+    }
+    pub(crate) fn __reduce180<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = ForStmt => ActionFn(51);
+        let __sym0 = __pop_Variant36(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action51::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 79)
+    }
+    pub(crate) fn __reduce181<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = LetStmt, ";" => ActionFn(52);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant41(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action52::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
+    }
+    pub(crate) fn __reduce182<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = AssignStmt, ";" => ActionFn(53);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant26(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action53::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
+    }
+    pub(crate) fn __reduce183<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = FnCallExpr, ";" => ActionFn(54);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant34(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action54::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
+    }
+    pub(crate) fn __reduce184<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Statement = ReturnStmt, ";" => ActionFn(55);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant54(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action55::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (2, 79)
+    }
+    pub(crate) fn __reduce185<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
+        assert!(__symbols.len() >= 8);
+        let __sym7 = __pop_Variant0(__symbols);
+        let __sym6 = __pop_Variant30(__symbols);
+        let __sym5 = __pop_Variant0(__symbols);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym7.2;
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (8, 80)
+    }
+    pub(crate) fn __reduce186<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant30(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (5, 80)
+    }
+    pub(crate) fn __reduce187<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructField = Ident, ":", Type => ActionFn(387);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant6(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (3, 81)
+    }
+    pub(crate) fn __reduce188<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructField? = StructField => ActionFn(185);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action185::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (1, 82)
+    }
+    pub(crate) fn __reduce189<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructField? =  => ActionFn(186);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action186::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant57(__nt), __end));
+        (0, 82)
+    }
+    pub(crate) fn __reduce190<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant31(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (4, 83)
+    }
+    pub(crate) fn __reduce191<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant14(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
+    }
+    pub(crate) fn __reduce192<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant58(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (3, 84)
+    }
+    pub(crate) fn __reduce193<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField? = StructInitField => ActionFn(175);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action175::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (1, 85)
+    }
+    pub(crate) fn __reduce194<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // StructInitField? =  => ActionFn(176);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action176::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant59(__nt), __end));
+        (0, 85)
+    }
+    pub(crate) fn __reduce195<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term = "(", Expression, ")" => ActionFn(69);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 86)
+    }
+    pub(crate) fn __reduce196<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term = Term0 => ActionFn(70);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action70::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 86)
+    }
+    pub(crate) fn __reduce197<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term0 = ValueExpr => ActionFn(66);
+        let __sym0 = __pop_Variant61(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action66::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
+    }
+    pub(crate) fn __reduce198<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term0 = FnCallExpr => ActionFn(67);
+        let __sym0 = __pop_Variant34(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action67::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 87)
+    }
+    pub(crate) fn __reduce199<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant58(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (3, 87)
+    }
+    pub(crate) fn __reduce200<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = RefType, Ident => ActionFn(422);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action422::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 88)
+    }
+    pub(crate) fn __reduce201<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident => ActionFn(423);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action423::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 88)
+    }
+    pub(crate) fn __reduce202<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 88)
+    }
+    pub(crate) fn __reduce203<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
+        assert!(__symbols.len() >= 4);
+        let __sym3 = __pop_Variant0(__symbols);
+        let __sym2 = __pop_Variant8(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym3.2;
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (4, 88)
+    }
+    pub(crate) fn __reduce204<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type? = Type => ActionFn(165);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action165::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (1, 89)
+    }
+    pub(crate) fn __reduce205<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // Type? =  => ActionFn(166);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action166::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 89)
+    }
+    pub(crate) fn __reduce206<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // UnaryOp = "-" => ActionFn(393);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action393::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
+    }
+    pub(crate) fn __reduce207<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // UnaryOp = "!" => ActionFn(394);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action394::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
+    }
+    pub(crate) fn __reduce208<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // UnaryOp = "~" => ActionFn(395);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action395::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 90)
+    }
+    pub(crate) fn __reduce209<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "integer" => ActionFn(396);
+        let __sym0 = __pop_Variant3(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action396::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 91)
+    }
+    pub(crate) fn __reduce210<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "boolean" => ActionFn(397);
+        let __sym0 = __pop_Variant1(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action397::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 91)
+    }
+    pub(crate) fn __reduce211<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = "string" => ActionFn(398);
+        let __sym0 = __pop_Variant2(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action398::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 91)
+    }
+    pub(crate) fn __reduce212<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ValueExpr = PathExpr => ActionFn(105);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action105::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant61(__nt), __end));
+        (1, 91)
+    }
+    pub(crate) fn __reduce213<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant10(__symbols);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (3, 92)
+    }
+    pub(crate) fn __reduce214<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __AssignStmt = AssignStmt => ActionFn(10);
+        let __sym0 = __pop_Variant26(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action10::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant26(__nt), __end));
+        (1, 93)
+    }
+    pub(crate) fn __reduce215<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
+        let __sym0 = __pop_Variant27(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action22::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 94)
+    }
+    pub(crate) fn __reduce216<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
+        let __sym0 = __pop_Variant27(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action23::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 95)
+    }
+    pub(crate) fn __reduce217<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
+        let __sym0 = __pop_Variant27(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action24::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant27(__nt), __end));
+        (1, 96)
+    }
+    pub(crate) fn __reduce218<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Block = Block => ActionFn(6);
+        let __sym0 = __pop_Variant10(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action6::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
+        (1, 97)
+    }
+    pub(crate) fn __reduce219<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Constant = Constant => ActionFn(32);
+        let __sym0 = __pop_Variant32(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action32::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant32(__nt), __end));
+        (1, 98)
+    }
+    pub(crate) fn __reduce220<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression = Expression => ActionFn(21);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action21::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 99)
+    }
+    pub(crate) fn __reduce221<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression0 = Expression0 => ActionFn(17);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action17::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 100)
+    }
+    pub(crate) fn __reduce222<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression1 = Expression1 => ActionFn(18);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action18::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 101)
+    }
+    pub(crate) fn __reduce223<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression2 = Expression2 => ActionFn(19);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action19::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 102)
+    }
+    pub(crate) fn __reduce224<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Expression3 = Expression3 => ActionFn(20);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action20::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 103)
+    }
+    pub(crate) fn __reduce225<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
+        let __sym0 = __pop_Variant34(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action8::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant34(__nt), __end));
+        (1, 104)
+    }
+    pub(crate) fn __reduce226<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __FnParam = FnParam => ActionFn(30);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action30::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
+        (1, 105)
+    }
+    pub(crate) fn __reduce227<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ForStmt = ForStmt => ActionFn(13);
+        let __sym0 = __pop_Variant36(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action13::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant36(__nt), __end));
+        (1, 106)
+    }
+    pub(crate) fn __reduce228<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Function = Function => ActionFn(31);
+        let __sym0 = __pop_Variant37(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action31::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant37(__nt), __end));
+        (1, 107)
+    }
+    pub(crate) fn __reduce229<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Ident = Ident => ActionFn(0);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action0::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant18(__nt), __end));
+        (1, 108)
+    }
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IfStmt = IfStmt => ActionFn(14);
+        let __sym0 = __pop_Variant39(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action14::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant39(__nt), __end));
+        (1, 110)
+    }
+    pub(crate) fn __reduce232<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Import = Import => ActionFn(35);
+        let __sym0 = __pop_Variant40(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action35::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant40(__nt), __end));
+        (1, 111)
+    }
+    pub(crate) fn __reduce233<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __LetStmt = LetStmt => ActionFn(9);
+        let __sym0 = __pop_Variant41(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action9::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant41(__nt), __end));
+        (1, 112)
+    }
+    pub(crate) fn __reduce234<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Module = Module => ActionFn(36);
+        let __sym0 = __pop_Variant46(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action36::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant46(__nt), __end));
+        (1, 113)
+    }
+    pub(crate) fn __reduce235<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
+        let __sym0 = __pop_Variant47(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action37::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant47(__nt), __end));
+        (1, 114)
+    }
+    pub(crate) fn __reduce236<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathExpr = PathExpr => ActionFn(3);
+        let __sym0 = __pop_Variant48(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action3::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant48(__nt), __end));
+        (1, 115)
+    }
+    pub(crate) fn __reduce237<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegment = PathSegment => ActionFn(5);
+        let __sym0 = __pop_Variant49(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action5::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant49(__nt), __end));
+        (1, 116)
+    }
+    pub(crate) fn __reduce238<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __PathSegments = PathSegments => ActionFn(4);
+        let __sym0 = __pop_Variant50(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action4::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant50(__nt), __end));
+        (1, 117)
+    }
+    pub(crate) fn __reduce239<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __RefType = RefType => ActionFn(29);
+        let __sym0 = __pop_Variant52(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action29::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant52(__nt), __end));
+        (1, 118)
+    }
+    pub(crate) fn __reduce240<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
+        let __sym0 = __pop_Variant54(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action11::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant54(__nt), __end));
+        (1, 119)
+    }
+    pub(crate) fn __reduce241<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Statement = Statement => ActionFn(7);
+        let __sym0 = __pop_Variant55(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action7::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant55(__nt), __end));
+        (1, 120)
+    }
+    pub(crate) fn __reduce242<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Struct = Struct => ActionFn(34);
+        let __sym0 = __pop_Variant56(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action34::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant56(__nt), __end));
+        (1, 121)
+    }
+    pub(crate) fn __reduce243<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __StructField = StructField => ActionFn(33);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action33::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (1, 122)
+    }
+    pub(crate) fn __reduce244<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
+        let __sym0 = __pop_Variant58(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action28::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant58(__nt), __end));
+        (1, 123)
+    }
+    pub(crate) fn __reduce245<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __StructInitField = StructInitField => ActionFn(27);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action27::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (1, 124)
+    }
+    pub(crate) fn __reduce246<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Term = Term => ActionFn(16);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action16::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 125)
+    }
+    pub(crate) fn __reduce247<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Term0 = Term0 => ActionFn(15);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action15::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (1, 126)
+    }
+    pub(crate) fn __reduce248<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __Type = Type => ActionFn(1);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action1::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 127)
+    }
+    pub(crate) fn __reduce249<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __UnaryOp = UnaryOp => ActionFn(25);
+        let __sym0 = __pop_Variant60(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action25::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant60(__nt), __end));
+        (1, 128)
+    }
+    pub(crate) fn __reduce251<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __WhileStmt = WhileStmt => ActionFn(12);
+        let __sym0 = __pop_Variant62(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action12::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant62(__nt), __end));
+        (1, 130)
+    }
+}
+pub(crate) use self::__parse__ValueExpr::ValueExprParser;
+
+#[rustfmt::skip]
+#[allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)]
+mod __parse__WhileStmt {
+
+    use crate::tokens::Token;
+    use crate::lexer::LexicalError;
+    use edlang_ast as ast;
+    use std::str::FromStr;
+    #[allow(unused_extern_crates)]
+    extern crate lalrpop_util as __lalrpop_util;
+    #[allow(unused_imports)]
+    use self::__lalrpop_util::state_machine as __state_machine;
+    extern crate core;
+    extern crate alloc;
+    use super::__ToTriple;
+    #[allow(dead_code)]
+    pub(crate) enum __Symbol<>
+     {
+        Variant0(Token),
+        Variant1(bool),
+        Variant2(String),
+        Variant3(u128),
+        Variant4(alloc::vec::Vec<Token>),
+        Variant5(core::option::Option<Token>),
+        Variant6(ast::Type),
+        Variant7(core::option::Option<ast::Type>),
+        Variant8(Vec<ast::Type>),
+        Variant9(core::option::Option<Vec<ast::Type>>),
+        Variant10(ast::Block),
+        Variant11(core::option::Option<ast::Block>),
+        Variant12(Vec<ast::Ident>),
+        Variant13(core::option::Option<Vec<ast::Ident>>),
+        Variant14(ast::Expression),
+        Variant15(alloc::vec::Vec<ast::Expression>),
+        Variant16(ast::FnParam),
+        Variant17(alloc::vec::Vec<ast::FnParam>),
+        Variant18(ast::Ident),
+        Variant19(alloc::vec::Vec<ast::Ident>),
+        Variant20(ast::StructField),
+        Variant21(alloc::vec::Vec<ast::StructField>),
+        Variant22((ast::Ident, ast::StructInitField)),
+        Variant23(alloc::vec::Vec<(ast::Ident, ast::StructInitField)>),
+        Variant24(alloc::vec::Vec<ast::Type>),
+        Variant25(usize),
+        Variant26(ast::AssignStmt),
+        Variant27(ast::BinaryOp),
+        Variant28(Vec<ast::Expression>),
+        Variant29(Vec<ast::FnParam>),
+        Variant30(Vec<ast::StructField>),
+        Variant31(Vec<(ast::Ident, ast::StructInitField)>),
+        Variant32(ast::Constant),
+        Variant33(core::option::Option<ast::Expression>),
+        Variant34(ast::FnCallExpr),
+        Variant35(core::option::Option<ast::FnParam>),
+        Variant36(ast::ForStmt),
+        Variant37(ast::Function),
+        Variant38(core::option::Option<ast::Ident>),
+        Variant39(ast::IfStmt),
+        Variant40(ast::Import),
+        Variant41(ast::LetStmt),
+        Variant42(Vec<ast::Import>),
+        Variant43(core::option::Option<Vec<ast::Import>>),
+        Variant44(Vec<ast::ModuleStatement>),
+        Variant45(Vec<ast::Statement>),
+        Variant46(ast::Module),
+        Variant47(ast::ModuleStatement),
+        Variant48(ast::PathExpr),
+        Variant49(ast::PathSegment),
+        Variant50(Vec<ast::PathSegment>),
+        Variant51(core::option::Option<Vec<ast::PathSegment>>),
+        Variant52(ast::RefType),
+        Variant53(core::option::Option<ast::RefType>),
+        Variant54(ast::ReturnStmt),
+        Variant55(ast::Statement),
+        Variant56(ast::Struct),
+        Variant57(core::option::Option<ast::StructField>),
+        Variant58(ast::StructInitExpr),
+        Variant59(core::option::Option<(ast::Ident, ast::StructInitField)>),
+        Variant60(ast::UnaryOp),
+        Variant61(ast::ValueExpr),
+        Variant62(ast::WhileStmt),
+    }
+    const __ACTION: &[i16] = &[
+        // State 0
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+        // State 1
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 2
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 3
+        0, 83, -121, -121, 84, 0, -121, -121, -121, -121, -121, 0, 0, -121, -121, 0, 0, -121, 85, 86, 0, 87, 88, 89, 0, -121, -121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -121, -121, 90, -121, 0,
+        // State 4
+        0, 0, 91, -111, 0, 0, -111, 92, -111, -111, -111, 0, 0, -111, 93, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, -111, 0, -111, 0,
+        // State 5
+        0, -166, -166, -166, -166, 16, -166, -166, -166, -166, -166, 0, 17, -166, -166, 0, 0, -166, -166, -166, -166, -166, -166, -166, 18, -166, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -166, -166, -166, -166, 0,
+        // State 6
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 7
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 19, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 8
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 9
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 10
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 11
+        0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 73, 26, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 0, 0,
+        // State 12
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 13
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 14
+        0, -165, -165, -165, -165, 0, -165, -165, -165, -165, -165, 0, 17, -165, -165, 0, 0, -165, -165, -165, -165, -165, -165, -165, 18, -165, -165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, -165, -165, -165, 0,
+        // State 15
+        70, 0, 0, 8, 0, 9, -82, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 16
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 17
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 18
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 19
+        0, 0, 0, 78, 0, 0, 115, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 20
+        0, -166, -166, -166, -166, 16, -166, -166, -166, -166, -166, 0, 17, 0, -166, 0, 116, -166, -166, -166, 0, -166, -166, -166, 18, 0, -166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -141, -166, -166, -166, 0,
+        // State 21
+        0, 0, 91, -110, 0, 0, -110, 92, -110, -110, -110, 0, 0, -110, 93, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -110, -110, 0, -110, 0,
+        // State 22
+        0, 0, 0, 0, 0, 0, 0, 119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 23
+        0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 73, 26, 0, 0, 27, 0, 0, 0, 0, 28, 0, 0, 0, 2, 0, 0, 0, 124, 0,
+        // State 24
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 25
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 26
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 27
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, -178, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 28
+        0, 83, -120, -120, 84, 0, -120, -120, -120, -120, -120, 0, 0, -120, -120, 0, 0, -120, 85, 86, 0, 87, 88, 89, 0, -120, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -120, -120, 90, -120, 0,
+        // State 29
+        70, 0, 0, 8, 0, 9, -84, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 30
+        0, 0, 0, 78, 0, 0, -81, 0, 79, 129, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 31
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 32
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -98, 0,
+        // State 33
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -166, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 34
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 35
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 36
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 37
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -177, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 38
+        0, 0, 0, 78, 0, 0, -83, 0, 79, 137, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 39
+        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 40
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0,
+        // State 41
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 42
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 43
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 44
+        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 45
+        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 46
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 47
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 48
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 49
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 50
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0,
+        // State 51
+        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 52
+        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 53
+        0, 0, 0, 78, 0, 0, 0, 0, 79, -192, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, -192, 0,
+        // State 54
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 55
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 56
+        0, 0, 0, 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 57
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 82, 0, 0, 0,
+        // State 58
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -148, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 59
+        70, 0, 0, 8, 0, 9, 0, 10, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, 0, 76,
+        // State 60
+        0, 0, 0, 78, 0, 0, 0, 0, 79, 0, 80, 0, 0, 0, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
+        // State 61
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 62
+        0, -117, -117, -117, -117, 0, -117, -117, -117, -117, -117, 0, 0, -117, -117, 0, 0, -117, -117, -117, 0, -117, -117, -117, 0, -117, -117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -117, -117, -117, -117, 0,
+        // State 63
+        0, -119, -119, -119, -119, 0, -119, -119, -119, -119, -119, 0, 0, -119, -119, 0, 0, -119, -119, -119, 0, -119, -119, -119, 0, -119, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -119, -119, -119, -119, 0,
+        // State 64
+        0, -199, -199, -199, -199, 0, -199, -199, -199, -199, -199, 0, 0, -199, -199, 0, 0, -199, -199, -199, 0, -199, -199, -199, 0, -199, -199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -199, -199, -199, -199, 0,
+        // State 65
+        0, -213, -213, -213, -213, 0, -213, -213, -213, -213, -213, 0, 0, -213, -213, 0, 0, -213, -213, -213, 0, -213, -213, -213, 0, -213, -213, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, -213, -213, -213, 0,
+        // State 66
+        0, -112, -112, -112, -112, 0, -112, -112, -112, -112, -112, 0, 0, -112, -112, 0, 0, -112, -112, -112, 0, -112, -112, -112, 0, -112, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112, -112, -112, -112, 0,
+        // State 67
+        0, -197, -197, -197, -197, 0, -197, -197, -197, -197, -197, 0, 0, -197, -197, 0, 0, -197, -197, -197, 0, -197, -197, -197, 0, -197, -197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -197, -197, -197, -197, 0,
+        // State 68
+        0, -198, -198, -198, -198, 0, -198, -198, -198, -198, -198, 0, 0, -198, -198, 0, 0, -198, -198, -198, 0, -198, -198, -198, 0, -198, -198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -198, -198, -198, -198, 0,
+        // State 69
+        -208, 0, 0, -208, 0, -208, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, -208, 0, 0, -208, 0, 0, 0, 0, 0, 0, -208, 0, 0, 0, 0, 0, 0, 0, -208,
+        // State 70
+        -207, 0, 0, -207, 0, -207, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, -207, 0, 0, -207, 0, 0, 0, 0, 0, 0, -207, 0, 0, 0, 0, 0, 0, 0, -207,
+        // State 71
+        0, -211, -211, -211, -211, 0, -211, -211, -211, -211, -211, 0, 0, -211, -211, 0, 0, -211, -211, -211, 0, -211, -211, -211, 0, -211, -211, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, -211, -211, -211, 0,
+        // State 72
+        0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, -138, 0, 0, 0, 0, 0, 0, 0, 0, -138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -138, -138, -138, -138, 0,
+        // State 73
+        0, -210, -210, -210, -210, 0, -210, -210, -210, -210, -210, 0, 0, -210, -210, 0, 0, -210, -210, -210, 0, -210, -210, -210, 0, -210, -210, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -210, -210, -210, -210, 0,
+        // State 74
+        0, -212, -212, -212, -212, 0, -212, -212, -212, -212, -212, 0, 0, -212, -212, 0, 0, -212, -212, -212, 0, -212, -212, -212, 0, -212, -212, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, -212, -212, -212, 0,
+        // State 75
+        -209, 0, 0, -209, 0, -209, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, -209, 0, 0, -209, 0, 0, 0, 0, 0, 0, -209, 0, 0, 0, 0, 0, 0, 0, -209,
+        // State 76
+        0, 0, 0, 0, 0, 0, 0, -214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -214, -214, -214, 0, 0, -214, 0, 0, 0, 0, -214, 0, 0, 0, -214, 0, 0, 0, -214, 0,
+        // State 77
+        -77, 0, 0, -77, 0, -77, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, 0, 0, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, -77,
+        // State 78
+        -75, 0, 0, -75, 0, -75, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, -75,
+        // State 79
+        -76, 0, 0, -76, 0, -76, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, 0, 0, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, -76,
+        // State 80
+        -79, 0, 0, -79, 0, -79, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, 0, 0, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, -79,
+        // State 81
+        -78, 0, 0, -78, 0, -78, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, 0, 0, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, -78,
+        // State 82
+        -65, 0, 0, -65, 0, -65, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, -65, 0, 0, -65, 0, 0, 0, 0, 0, 0, -65, 0, 0, 0, 0, 0, 0, 0, -65,
+        // State 83
+        -70, 0, 0, -70, 0, -70, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, -70,
+        // State 84
+        -66, 0, 0, -66, 0, -66, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, -66,
+        // State 85
+        -68, 0, 0, -68, 0, -68, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, -68,
+        // State 86
+        -64, 0, 0, -64, 0, -64, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, -64, 0, 0, -64, 0, 0, 0, 0, 0, 0, -64, 0, 0, 0, 0, 0, 0, 0, -64,
+        // State 87
+        -67, 0, 0, -67, 0, -67, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, -67,
+        // State 88
+        -69, 0, 0, -69, 0, -69, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, -69,
+        // State 89
+        -71, 0, 0, -71, 0, -71, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, -71,
+        // State 90
+        -74, 0, 0, -74, 0, -74, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, 0, 0, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, -74,
+        // State 91
+        -73, 0, 0, -73, 0, -73, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, 0, 0, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, -73,
+        // State 92
+        -72, 0, 0, -72, 0, -72, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, -72,
+        // State 93
+        0, -169, -169, -169, -169, 0, -169, -169, -169, -169, -169, 0, -169, -169, -169, 0, 0, -169, -169, -169, -169, -169, -169, -169, -169, -169, -169, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -169, -169, -169, -169, 0,
+        // State 94
+        0, -116, -116, -116, -116, 0, -116, -116, -116, -116, -116, 0, 0, -116, -116, 0, 0, -116, -116, -116, 0, -116, -116, -116, 0, -116, -116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -116, -116, -116, -116, 0,
+        // State 95
+        0, -114, -114, -114, -114, 0, -114, -114, -114, -114, -114, 0, 0, -114, -114, 0, 0, -114, -114, -114, 0, -114, -114, -114, 0, -114, -114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -114, -114, -114, -114, 0,
+        // State 96
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0,
+        // State 97
+        0, 0, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 98
+        0, -115, -115, -115, -115, 0, -115, -115, -115, -115, -115, 0, 0, -115, -115, 0, 0, -115, -115, -115, 0, -115, -115, -115, 0, -115, -115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -115, -115, -115, -115, 0,
+        // State 99
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 100
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 101
+        0, 0, 0, 0, 0, 0, 0, -181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -181, -181, -181, 0, 0, -181, 0, 0, 0, 0, -181, 0, 0, 0, -181, 0, 0, 0, -181, 0,
+        // State 102
+        0, 0, 0, 0, 0, 0, 0, -179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -179, -179, -179, 0, 0, -179, 0, 0, 0, 0, -179, 0, 0, 0, -179, 0, 0, 0, -179, 0,
+        // State 103
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 104
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 105
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 106
+        0, 0, 0, 0, 0, 0, 0, -157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, -157, -157, 0, 0, -157, 0, 0, 0, 0, -157, 0, 0, 0, -157, 0, 0, 0, -157, 0,
+        // State 107
+        0, 0, 0, 0, 0, 0, 0, -180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -180, -180, -180, 0, 0, -180, 0, 0, 0, 0, -180, 0, 0, 0, -180, 0, 0, 0, -180, 0,
+        // State 108
+        0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 109
+        0, -118, -118, -118, -118, 0, -118, -118, -118, -118, -118, 0, 0, -118, -118, 0, 0, -118, -118, -118, 0, -118, -118, -118, 0, -118, -118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -118, -118, -118, -118, 0,
+        // State 110
+        0, -170, -170, -170, -170, 0, -170, -170, -170, -170, -170, 0, -170, -170, -170, 0, 0, -170, -170, -170, -170, -170, -170, -170, -170, -170, -170, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -170, -170, -170, -170, 0,
+        // State 111
+        0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 112
+        0, -167, -167, -167, -167, 0, -167, -167, -167, -167, -167, 0, -167, -167, -167, 0, 0, -167, -167, -167, -167, -167, -167, -167, -167, -167, -167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, -167, -167, -167, 0,
+        // State 113
+        0, -113, -113, -113, -113, 0, -113, -113, -113, -113, -113, 0, 0, -113, -113, 0, 0, -113, -113, -113, 0, -113, -113, -113, 0, -113, -113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -113, -113, -113, -113, 0,
+        // State 114
+        0, -196, -196, -196, -196, 0, -196, -196, -196, -196, -196, 0, 0, -196, -196, 0, 0, -196, -196, -196, 0, -196, -196, -196, 0, -196, -196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -196, -196, -196, -196, 0,
+        // State 115
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 116
+        0, -200, -200, -200, -200, 0, -200, -200, -200, -200, -200, 0, 0, -200, -200, 0, 0, -200, -200, -200, 0, -200, -200, -200, 0, -200, -200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -200, -200, -200, -200, 0,
+        // State 117
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 118
+        0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 119
+        0, 0, 0, 0, 0, 0, 0, -183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -183, -183, -183, 0, 0, -183, 0, 0, 0, 0, -183, 0, 0, 0, -183, 0, 0, 0, -183, 0,
+        // State 120
+        0, 0, 0, 0, 0, 0, 0, -184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184, -184, -184, 0, 0, -184, 0, 0, 0, 0, -184, 0, 0, 0, -184, 0, 0, 0, -184, 0,
+        // State 121
+        0, 0, 0, 0, 0, 0, 0, -182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -182, -182, -182, 0, 0, -182, 0, 0, 0, 0, -182, 0, 0, 0, -182, 0, 0, 0, -182, 0,
+        // State 122
+        0, 0, 0, 0, 0, 0, 0, -158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -158, -158, -158, 0, 0, -158, 0, 0, 0, 0, -158, 0, 0, 0, -158, 0, 0, 0, -158, 0,
+        // State 123
+        0, 0, 0, 0, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, -80, -80, 0, 0, -80, 0, 0, 0, 0, -80, 0, 0, 0, -80, 0, 0, 0, -80, 0,
+        // State 124
+        0, 0, 0, 0, 0, 0, 0, -185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -185, -185, -185, 0, 0, -185, 0, 0, 0, 0, -185, 0, 0, 0, -185, 0, 0, 0, -185, 0,
+        // State 125
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 126
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 127
+        0, -124, -124, -124, -124, 0, -124, -124, -124, -124, -124, 0, 0, -124, -124, 0, 0, -124, -124, -124, 0, -124, -124, -124, 0, -124, -124, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -124, -124, -124, -124, 0,
+        // State 128
+        -26, 0, 0, -26, 0, -26, -26, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, -26, 0, 0, -26, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, -26,
+        // State 129
+        0, -168, -168, -168, -168, 0, -168, -168, -168, -168, -168, 0, -168, -168, -168, 0, 0, -168, -168, -168, -168, -168, -168, -168, -168, -168, -168, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, -168, -168, -168, 0,
+        // State 130
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 0,
+        // State 131
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 132
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -97, 0,
+        // State 133
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 134
+        0, 0, 0, 0, 0, 0, 0, -144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, -144, -144, -144, 0, 0, -144, 0, 0, 0, 0, -144, 0, 0, 0, -144, 0, 0, 0, -144, 0,
+        // State 135
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 136
+        -27, 0, 0, -27, 0, -27, -27, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, -27, 0, 0, -27, 0, 0, 0, 0, 0, 0, -27, 0, 0, 0, 0, 0, 0, 0, -27,
+        // State 137
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 138
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, -202, 0, -202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 139
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 140
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -173, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 141
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -99, 0,
+        // State 142
+        0, 0, 0, 0, 0, 0, -191, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, -191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 0,
+        // State 143
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -51, 0,
+        // State 144
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 145
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 146
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 147
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0,
+        // State 148
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 57, 0, -201, 0, -201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 149
+        0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 150
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 151
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -52, 0,
+        // State 152
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 0,
+        // State 153
+        0, 0, 0, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -128, -128, -128, 0, 0, -128, 0, 0, 0, 0, -128, 0, 0, 0, -128, 0, 0, 0, -128, 0,
+        // State 154
+        0, 0, 0, 0, 0, 0, 0, -143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -143, -143, -143, 0, 0, -143, 0, 0, 0, 0, -143, 0, 0, 0, -143, 0, 0, 0, -143, 0,
+        // State 155
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 156
+        0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 157
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 158
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 159
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -204, 0, -204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 160
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 161
+        0, 0, 0, 0, 0, 0, 0, -129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -129, -129, -129, 0, 0, -129, 0, 0, 0, 0, -129, 0, 0, 0, -129, 0, 0, 0, -129, 0,
+        // State 162
+        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+        // State 163
+        0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -203, 0, -203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    ];
+    fn __action(state: i16, integer: usize) -> i16 {
+        __ACTION[(state as usize) * 52 + integer]
+    }
+    const __EOF_ACTION: &[i16] = &[
+        // State 0
+        0,
+        // State 1
+        0,
+        // State 2
+        0,
+        // State 3
+        0,
+        // State 4
+        0,
+        // State 5
+        0,
+        // State 6
+        0,
+        // State 7
+        0,
+        // State 8
+        0,
+        // State 9
+        0,
+        // State 10
+        0,
+        // State 11
+        0,
+        // State 12
+        0,
+        // State 13
+        0,
+        // State 14
+        0,
+        // State 15
+        0,
+        // State 16
+        0,
+        // State 17
+        0,
+        // State 18
+        0,
+        // State 19
+        0,
+        // State 20
+        0,
+        // State 21
+        0,
+        // State 22
+        0,
+        // State 23
+        0,
+        // State 24
+        0,
+        // State 25
+        0,
+        // State 26
+        0,
+        // State 27
+        0,
+        // State 28
+        0,
+        // State 29
+        0,
+        // State 30
+        0,
+        // State 31
+        0,
+        // State 32
+        0,
+        // State 33
+        0,
+        // State 34
+        0,
+        // State 35
+        0,
+        // State 36
+        0,
+        // State 37
+        0,
+        // State 38
+        0,
+        // State 39
+        0,
+        // State 40
+        0,
+        // State 41
+        0,
+        // State 42
+        0,
+        // State 43
+        0,
+        // State 44
+        0,
+        // State 45
+        0,
+        // State 46
+        0,
+        // State 47
+        0,
+        // State 48
+        0,
+        // State 49
+        0,
+        // State 50
+        0,
+        // State 51
+        0,
+        // State 52
+        0,
+        // State 53
+        0,
+        // State 54
+        0,
+        // State 55
+        0,
+        // State 56
+        0,
+        // State 57
+        0,
+        // State 58
+        0,
+        // State 59
+        0,
+        // State 60
+        0,
+        // State 61
+        -252,
+        // State 62
+        0,
+        // State 63
+        0,
+        // State 64
+        0,
+        // State 65
+        0,
+        // State 66
+        0,
+        // State 67
+        0,
+        // State 68
+        0,
+        // State 69
+        0,
+        // State 70
+        0,
+        // State 71
+        0,
+        // State 72
+        0,
+        // State 73
+        0,
+        // State 74
+        0,
+        // State 75
+        0,
+        // State 76
+        -214,
+        // State 77
+        0,
+        // State 78
+        0,
+        // State 79
+        0,
+        // State 80
+        0,
+        // State 81
+        0,
+        // State 82
+        0,
+        // State 83
+        0,
+        // State 84
+        0,
+        // State 85
+        0,
+        // State 86
+        0,
+        // State 87
+        0,
+        // State 88
+        0,
+        // State 89
+        0,
+        // State 90
+        0,
+        // State 91
+        0,
+        // State 92
+        0,
+        // State 93
+        0,
+        // State 94
+        0,
+        // State 95
+        0,
+        // State 96
+        0,
+        // State 97
+        0,
+        // State 98
+        0,
+        // State 99
+        0,
+        // State 100
+        0,
+        // State 101
+        0,
+        // State 102
+        0,
+        // State 103
+        0,
+        // State 104
+        0,
+        // State 105
+        0,
+        // State 106
+        0,
+        // State 107
+        0,
+        // State 108
+        0,
+        // State 109
+        0,
+        // State 110
+        0,
+        // State 111
+        0,
+        // State 112
+        0,
+        // State 113
+        0,
+        // State 114
+        0,
+        // State 115
+        0,
+        // State 116
+        0,
+        // State 117
+        0,
+        // State 118
+        0,
+        // State 119
+        0,
+        // State 120
+        0,
+        // State 121
+        0,
+        // State 122
+        0,
+        // State 123
+        -80,
+        // State 124
+        0,
+        // State 125
+        0,
+        // State 126
+        0,
+        // State 127
+        0,
+        // State 128
+        0,
+        // State 129
+        0,
+        // State 130
+        0,
+        // State 131
+        0,
+        // State 132
+        0,
+        // State 133
+        0,
+        // State 134
+        0,
+        // State 135
+        0,
+        // State 136
+        0,
+        // State 137
+        0,
+        // State 138
+        0,
+        // State 139
+        0,
+        // State 140
+        0,
+        // State 141
+        0,
+        // State 142
+        0,
+        // State 143
+        0,
+        // State 144
+        0,
+        // State 145
+        0,
+        // State 146
+        0,
+        // State 147
+        0,
+        // State 148
+        0,
+        // State 149
+        0,
+        // State 150
+        0,
+        // State 151
+        0,
+        // State 152
+        0,
+        // State 153
+        0,
+        // State 154
+        0,
+        // State 155
+        0,
+        // State 156
+        0,
+        // State 157
+        0,
+        // State 158
+        0,
+        // State 159
+        0,
+        // State 160
+        0,
+        // State 161
+        0,
+        // State 162
+        0,
+        // State 163
+        0,
+    ];
+    fn __goto(state: i16, nt: usize) -> i16 {
+        match nt {
+            1 => 22,
+            15 => 29,
+            30 => 40,
+            33 => 45,
+            36 => 99,
+            37 => 12,
+            38 => 13,
+            39 => 10,
+            40 => match state {
+                35 => 134,
+                49 => 153,
+                50 => 154,
+                57 => 161,
+                _ => 76,
+            },
+            41 => 111,
+            45 => 130,
+            46 => match state {
+                52 => 157,
+                56 => 160,
+                _ => 137,
+            },
+            49 => match state {
+                8 => 19,
+                15 => 30,
+                17 => 31,
+                25 => 35,
+                27 => 37,
+                29 => 38,
+                34 => 42,
+                41 => 48,
+                43 => 49,
+                47 => 53,
+                54 => 57,
+                55 => 58,
+                59 => 60,
+                _ => 2,
+            },
+            50 => 62,
+            51 => match state {
+                6 => 94,
+                7 => 95,
+                9 => 98,
+                12 => 109,
+                18 => 113,
+                _ => 63,
+            },
+            52 => match state {
+                13 => 28,
+                _ => 3,
+            },
+            53 => match state {
+                10 => 21,
+                _ => 4,
+            },
+            55 => match state {
+                11 | 23 => 100,
+                _ => 64,
+            },
+            58 => 101,
+            60 => match state {
+                8 | 34 | 41 | 47 | 55 | 59 => 20,
+                22 => 33,
+                16 => 112,
+                24 => 125,
+                26 => 126,
+                32 | 40 => 131,
+                36 => 135,
+                39 | 44..=45 | 51..=52 | 56 => 138,
+                46 => 148,
+                _ => 5,
+            },
+            62 => 96,
+            63 => 102,
+            65 => 103,
+            69 => 23,
+            72 => match state {
+                11 | 23 => 104,
+                22 => 117,
+                _ => 65,
+            },
+            73 => match state {
+                14 => 110,
+                _ => 93,
+            },
+            74 => 14,
+            76 => 46,
+            78 => 105,
+            79 => match state {
+                23 => 122,
+                _ => 106,
+            },
+            83 => match state {
+                34 => 133,
+                41 => 144,
+                47 => 152,
+                55 => 158,
+                59 => 162,
+                _ => 97,
+            },
+            84 => match state {
+                40 => 141,
+                _ => 132,
+            },
+            86 => 66,
+            87 => 67,
+            88 => match state {
+                44 => 145,
+                45 => 146,
+                51 => 155,
+                _ => 139,
+            },
+            90 => 6,
+            91 => 68,
+            92 => match state {
+                0 => 61,
+                _ => 107,
+            },
+            _ => 0,
+        }
+    }
+    const __TERMINAL: &[&str] = &[
+        r###""!""###,
+        r###""!=""###,
+        r###""%""###,
+        r###""&""###,
+        r###""&&""###,
+        r###""(""###,
+        r###"")""###,
+        r###""*""###,
+        r###""+""###,
+        r###"",""###,
+        r###""-""###,
+        r###""->""###,
+        r###"".""###,
+        r###""..""###,
+        r###""/""###,
+        r###"":""###,
+        r###""::""###,
+        r###"";""###,
+        r###""<""###,
+        r###""<=""###,
+        r###""=""###,
+        r###""==""###,
+        r###"">""###,
+        r###"">=""###,
+        r###""[""###,
+        r###""]""###,
+        r###""^""###,
+        r###""boolean""###,
+        r###""const""###,
+        r###""else""###,
+        r###""extern""###,
+        r###""fn""###,
+        r###""for""###,
+        r###""identifier""###,
+        r###""if""###,
+        r###""in""###,
+        r###""integer""###,
+        r###""let""###,
+        r###""match""###,
+        r###""mod""###,
+        r###""mut""###,
+        r###""pub""###,
+        r###""return""###,
+        r###""string""###,
+        r###""struct""###,
+        r###""use""###,
+        r###""while""###,
+        r###""{""###,
+        r###""|""###,
+        r###""||""###,
+        r###""}""###,
+        r###""~""###,
+    ];
+    fn __expected_tokens(__state: i16) -> alloc::vec::Vec<alloc::string::String> {
+        __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
+            let next_state = __action(__state, index);
+            if next_state == 0 {
+                None
+            } else {
+                Some(alloc::string::ToString::to_string(terminal))
+            }
+        }).collect()
+    }
+    fn __expected_tokens_from_states<
+    >(
+        __states: &[i16],
+        _: core::marker::PhantomData<()>,
+    ) -> alloc::vec::Vec<alloc::string::String>
+    {
+        __TERMINAL.iter().enumerate().filter_map(|(index, terminal)| {
+            if __accepts(None, __states, Some(index), core::marker::PhantomData::<()>) {
+                Some(alloc::string::ToString::to_string(terminal))
+            } else {
+                None
+            }
+        }).collect()
+    }
+    pub(crate) struct __StateMachine<>
+    where 
+    {
+        __phantom: core::marker::PhantomData<()>,
+    }
+    impl<> __state_machine::ParserDefinition for __StateMachine<>
+    where 
+    {
+        type Location = usize;
+        type Error = LexicalError;
+        type Token = Token;
+        type TokenIndex = usize;
+        type Symbol = __Symbol<>;
+        type Success = ast::WhileStmt;
+        type StateIndex = i16;
+        type Action = i16;
+        type ReduceIndex = i16;
+        type NonterminalIndex = usize;
+
+        #[inline]
+        fn start_location(&self) -> Self::Location {
+              Default::default()
+        }
+
+        #[inline]
+        fn start_state(&self) -> Self::StateIndex {
+              0
+        }
+
+        #[inline]
+        fn token_to_index(&self, token: &Self::Token) -> Option<usize> {
+            __token_to_integer(token, core::marker::PhantomData::<()>)
+        }
+
+        #[inline]
+        fn action(&self, state: i16, integer: usize) -> i16 {
+            __action(state, integer)
+        }
+
+        #[inline]
+        fn error_action(&self, state: i16) -> i16 {
+            __action(state, 52 - 1)
+        }
+
+        #[inline]
+        fn eof_action(&self, state: i16) -> i16 {
+            __EOF_ACTION[state as usize]
+        }
+
+        #[inline]
+        fn goto(&self, state: i16, nt: usize) -> i16 {
+            __goto(state, nt)
+        }
+
+        fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol {
+            __token_to_symbol(token_index, token, core::marker::PhantomData::<()>)
+        }
+
+        fn expected_tokens(&self, state: i16) -> alloc::vec::Vec<alloc::string::String> {
+            __expected_tokens(state)
+        }
+
+        fn expected_tokens_from_states(&self, states: &[i16]) -> alloc::vec::Vec<alloc::string::String> {
+            __expected_tokens_from_states(states, core::marker::PhantomData::<()>)
+        }
+
+        #[inline]
+        fn uses_error_recovery(&self) -> bool {
+            false
+        }
+
+        #[inline]
+        fn error_recovery_symbol(
+            &self,
+            recovery: __state_machine::ErrorRecovery<Self>,
+        ) -> Self::Symbol {
+            panic!("error recovery not enabled for this grammar")
+        }
+
+        fn reduce(
+            &mut self,
+            action: i16,
+            start_location: Option<&Self::Location>,
+            states: &mut alloc::vec::Vec<i16>,
+            symbols: &mut alloc::vec::Vec<__state_machine::SymbolTriple<Self>>,
+        ) -> Option<__state_machine::ParseResult<Self>> {
+            __reduce(
+                action,
+                start_location,
+                states,
+                symbols,
+                core::marker::PhantomData::<()>,
+            )
+        }
+
+        fn simulate_reduce(&self, action: i16) -> __state_machine::SimulatedReduce<Self> {
+            __simulate_reduce(action, core::marker::PhantomData::<()>)
+        }
+    }
+    fn __token_to_integer<
+    >(
+        __token: &Token,
+        _: core::marker::PhantomData<()>,
+    ) -> Option<usize>
+    {
+        match *__token {
+            Token::OperatorNot if true => Some(0),
+            Token::OperatorNe if true => Some(1),
+            Token::OperatorRem if true => Some(2),
+            Token::OperatorBitwiseAnd if true => Some(3),
+            Token::OperatorAnd if true => Some(4),
+            Token::LeftParen if true => Some(5),
+            Token::RightParen if true => Some(6),
+            Token::OperatorMul if true => Some(7),
+            Token::OperatorAdd if true => Some(8),
+            Token::Coma if true => Some(9),
+            Token::OperatorSub if true => Some(10),
+            Token::Arrow if true => Some(11),
+            Token::Dot if true => Some(12),
+            Token::TwoDots if true => Some(13),
+            Token::OperatorDiv if true => Some(14),
+            Token::Colon if true => Some(15),
+            Token::DoubleColon if true => Some(16),
+            Token::Semicolon if true => Some(17),
+            Token::LessThanSign if true => Some(18),
+            Token::LessThanEqSign if true => Some(19),
+            Token::Assign if true => Some(20),
+            Token::OperatorEq if true => Some(21),
+            Token::MoreThanSign if true => Some(22),
+            Token::MoreThanEqSign if true => Some(23),
+            Token::LeftSquareBracket if true => Some(24),
+            Token::RightSquareBracket if true => Some(25),
+            Token::OperatorBitwiseXor if true => Some(26),
+            Token::Boolean(_) if true => Some(27),
+            Token::KeywordConst if true => Some(28),
+            Token::KeywordElse if true => Some(29),
+            Token::KeywordExtern if true => Some(30),
+            Token::KeywordFn if true => Some(31),
+            Token::KeywordFor if true => Some(32),
+            Token::Identifier(_) if true => Some(33),
+            Token::KeywordIf if true => Some(34),
+            Token::KeywordIn if true => Some(35),
+            Token::Integer(_) if true => Some(36),
+            Token::KeywordLet if true => Some(37),
+            Token::KeywordMatch if true => Some(38),
+            Token::KeywordMod if true => Some(39),
+            Token::KeywordMut if true => Some(40),
+            Token::KeywordPub if true => Some(41),
+            Token::KeywordReturn if true => Some(42),
+            Token::String(_) if true => Some(43),
+            Token::KeywordStruct if true => Some(44),
+            Token::KeywordUse if true => Some(45),
+            Token::KeywordWhile if true => Some(46),
+            Token::LeftBracket if true => Some(47),
+            Token::OperatorBitwiseOr if true => Some(48),
+            Token::OperatorOr if true => Some(49),
+            Token::RightBracket if true => Some(50),
+            Token::OperatorBitwiseNot if true => Some(51),
+            _ => None,
+        }
+    }
+    fn __token_to_symbol<
+    >(
+        __token_index: usize,
+        __token: Token,
+        _: core::marker::PhantomData<()>,
+    ) -> __Symbol<>
+    {
+        match __token_index {
+            0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 34 | 35 | 37 | 38 | 39 | 40 | 41 | 42 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 => __Symbol::Variant0(__token),
+            27 => match __token {
+                Token::Boolean(__tok0) if true => __Symbol::Variant1(__tok0),
+                _ => unreachable!(),
+            },
+            33 | 43 => match __token {
+                Token::Identifier(__tok0) | Token::String(__tok0) if true => __Symbol::Variant2(__tok0),
+                _ => unreachable!(),
+            },
+            36 => match __token {
+                Token::Integer(__tok0) if true => __Symbol::Variant3(__tok0),
+                _ => unreachable!(),
+            },
+            _ => unreachable!(),
+        }
+    }
+    fn __simulate_reduce<
+    >(
+        __reduce_index: i16,
+        _: core::marker::PhantomData<()>,
+    ) -> __state_machine::SimulatedReduce<__StateMachine<>>
+    {
+        match __reduce_index {
+            0 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 0,
+                }
+            }
+            1 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 0,
+                }
+            }
+            2 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 1,
+                }
+            }
+            3 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 1,
+                }
+            }
+            4 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 2,
+                }
+            }
+            5 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 2,
+                }
+            }
+            6 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 3,
+                }
+            }
+            7 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 3,
+                }
+            }
+            8 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 4,
+                }
+            }
+            9 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 4,
+                }
+            }
+            10 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 5,
+                }
+            }
+            11 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 6,
+                }
+            }
+            12 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 6,
+                }
+            }
+            13 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 7,
+                }
+            }
+            14 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 8,
+                }
+            }
+            15 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 8,
+                }
+            }
+            16 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 9,
+                }
+            }
+            17 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 10,
+                }
+            }
+            18 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 10,
+                }
+            }
+            19 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 11,
+                }
+            }
+            20 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 12,
+                }
+            }
+            21 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 12,
+                }
+            }
+            22 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 13,
+                }
+            }
+            23 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 14,
+                }
+            }
+            24 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 14,
+                }
+            }
+            25 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 15,
+                }
+            }
+            26 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 15,
+                }
+            }
+            27 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 16,
+                }
+            }
+            28 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 17,
+                }
+            }
+            29 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 17,
+                }
+            }
+            30 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 18,
+                }
+            }
+            31 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 18,
+                }
+            }
+            32 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 19,
+                }
+            }
+            33 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 20,
+                }
+            }
+            34 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 20,
+                }
+            }
+            35 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 21,
+                }
+            }
+            36 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 21,
+                }
+            }
+            37 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 22,
+                }
+            }
+            38 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 23,
+                }
+            }
+            39 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 23,
+                }
+            }
+            40 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 24,
+                }
+            }
+            41 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 24,
+                }
+            }
+            42 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 25,
+                }
+            }
+            43 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 26,
+                }
+            }
+            44 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 26,
+                }
+            }
+            45 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 27,
+                }
+            }
+            46 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 27,
+                }
+            }
+            47 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 28,
+                }
+            }
+            48 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 29,
+                }
+            }
+            49 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 29,
+                }
+            }
+            50 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 30,
+                }
+            }
+            51 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 30,
+                }
+            }
+            52 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 31,
+                }
+            }
+            53 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 32,
+                }
+            }
+            54 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 32,
+                }
+            }
+            55 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 33,
+                }
+            }
+            56 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 33,
+                }
+            }
+            57 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 34,
+                }
+            }
+            58 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 35,
+                }
+            }
+            59 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 36,
+                }
+            }
+            60 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 36,
+                }
+            }
+            61 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 36,
+                }
+            }
+            62 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 36,
+                }
+            }
+            63 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            64 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            65 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            66 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            67 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            68 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            69 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            70 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 37,
+                }
+            }
+            71 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 38,
+                }
+            }
+            72 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 38,
+                }
+            }
+            73 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 38,
+                }
+            }
+            74 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 39,
+                }
+            }
+            75 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 39,
+                }
+            }
+            76 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 39,
+                }
+            }
+            77 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 39,
+                }
+            }
+            78 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 39,
+                }
+            }
+            79 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 40,
+                }
+            }
+            80 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 41,
+                }
+            }
+            81 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 41,
+                }
+            }
+            82 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 41,
+                }
+            }
+            83 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 41,
+                }
+            }
+            84 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 42,
+                }
+            }
+            85 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 42,
+                }
+            }
+            86 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 42,
+                }
+            }
+            87 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 42,
+                }
+            }
+            88 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 43,
+                }
+            }
+            89 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 43,
+                }
+            }
+            90 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 43,
+                }
+            }
+            91 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 43,
+                }
+            }
+            92 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 44,
+                }
+            }
+            93 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 44,
+                }
+            }
+            94 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 44,
+                }
+            }
+            95 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 44,
+                }
+            }
+            96 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 45,
+                }
+            }
+            97 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 45,
+                }
+            }
+            98 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 45,
+                }
+            }
+            99 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 45,
+                }
+            }
+            100 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 46,
+                }
+            }
+            101 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 46,
+                }
+            }
+            102 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 46,
+                }
+            }
+            103 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 46,
+                }
+            }
+            104 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 7,
+                    nonterminal_produced: 47,
+                }
+            }
+            105 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 48,
+                }
+            }
+            106 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 48,
+                }
+            }
+            107 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 48,
+                }
+            }
+            108 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 48,
+                }
+            }
+            109 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 49,
+                }
+            }
+            110 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 49,
+                }
+            }
+            111 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 50,
+                }
+            }
+            112 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 51,
+                }
+            }
+            113 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 51,
+                }
+            }
+            114 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 51,
+                }
+            }
+            115 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 51,
+                }
+            }
+            116 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 51,
+                }
+            }
+            117 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 52,
+                }
+            }
+            118 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 52,
+                }
+            }
+            119 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 53,
+                }
+            }
+            120 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 53,
+                }
+            }
+            121 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 54,
+                }
+            }
+            122 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 54,
+                }
+            }
+            123 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 55,
+                }
+            }
+            124 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 56,
+                }
+            }
+            125 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 57,
+                }
+            }
+            126 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 57,
+                }
+            }
+            127 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 58,
+                }
+            }
+            128 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 7,
+                    nonterminal_produced: 58,
+                }
+            }
+            129 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 10,
+                    nonterminal_produced: 59,
+                }
+            }
+            130 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 8,
+                    nonterminal_produced: 59,
+                }
+            }
+            131 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 9,
+                    nonterminal_produced: 59,
+                }
+            }
+            132 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 7,
+                    nonterminal_produced: 59,
+                }
+            }
+            133 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 9,
+                    nonterminal_produced: 59,
+                }
+            }
+            134 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 7,
+                    nonterminal_produced: 59,
+                }
+            }
+            135 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 8,
+                    nonterminal_produced: 59,
+                }
+            }
+            136 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 6,
+                    nonterminal_produced: 59,
+                }
+            }
+            137 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 60,
+                }
+            }
+            138 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 61,
+                }
+            }
+            139 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 61,
+                }
+            }
+            140 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 62,
+                }
+            }
+            141 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 62,
+                }
+            }
+            142 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 63,
+                }
+            }
+            143 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 63,
+                }
+            }
+            144 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 6,
+                    nonterminal_produced: 64,
+                }
+            }
+            145 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 64,
+                }
+            }
+            146 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 7,
+                    nonterminal_produced: 65,
+                }
+            }
+            147 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 6,
+                    nonterminal_produced: 65,
+                }
+            }
+            148 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 7,
+                    nonterminal_produced: 65,
+                }
+            }
+            149 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 6,
+                    nonterminal_produced: 65,
+                }
+            }
+            150 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 66,
+                }
+            }
+            151 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 66,
+                }
+            }
+            152 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 67,
+                }
+            }
+            153 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 67,
+                }
+            }
+            154 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 68,
+                }
+            }
+            155 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 68,
+                }
+            }
+            156 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 69,
+                }
+            }
+            157 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 69,
+                }
+            }
+            158 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 6,
+                    nonterminal_produced: 70,
+                }
+            }
+            159 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 70,
+                }
+            }
+            160 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 71,
+                }
+            }
+            161 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 71,
+                }
+            }
+            162 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 71,
+                }
+            }
+            163 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 71,
+                }
+            }
+            164 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 72,
+                }
+            }
+            165 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 72,
+                }
+            }
+            166 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 73,
+                }
+            }
+            167 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 73,
+                }
+            }
+            168 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 74,
+                }
+            }
+            169 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 74,
+                }
+            }
+            170 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 75,
+                }
+            }
+            171 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 75,
+                }
+            }
+            172 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 76,
+                }
+            }
+            173 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 76,
+                }
+            }
+            174 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 77,
+                }
+            }
+            175 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 77,
+                }
+            }
+            176 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 78,
+                }
+            }
+            177 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 78,
+                }
+            }
+            178 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
+                }
+            }
+            179 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
+                }
+            }
+            180 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 79,
+                }
+            }
+            181 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
+                }
+            }
+            182 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
+                }
+            }
+            183 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
+                }
+            }
+            184 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 79,
+                }
+            }
+            185 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 8,
+                    nonterminal_produced: 80,
+                }
+            }
+            186 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 80,
+                }
+            }
+            187 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 81,
+                }
+            }
+            188 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 82,
+                }
+            }
+            189 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 82,
+                }
+            }
+            190 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 83,
+                }
+            }
+            191 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
+                }
+            }
+            192 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 84,
+                }
+            }
+            193 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 85,
+                }
+            }
+            194 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 85,
+                }
+            }
+            195 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 86,
+                }
+            }
+            196 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 86,
+                }
+            }
+            197 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
+                }
+            }
+            198 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 87,
+                }
+            }
+            199 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 87,
+                }
+            }
+            200 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 2,
+                    nonterminal_produced: 88,
+                }
+            }
+            201 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 88,
+                }
+            }
+            202 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 5,
+                    nonterminal_produced: 88,
+                }
+            }
+            203 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 4,
+                    nonterminal_produced: 88,
+                }
+            }
+            204 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 89,
+                }
+            }
+            205 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 0,
+                    nonterminal_produced: 89,
+                }
+            }
+            206 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
+                }
+            }
+            207 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
+                }
+            }
+            208 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 90,
+                }
+            }
+            209 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 91,
+                }
+            }
+            210 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 91,
+                }
+            }
+            211 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 91,
+                }
+            }
+            212 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 91,
+                }
+            }
+            213 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 3,
+                    nonterminal_produced: 92,
+                }
+            }
+            214 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 93,
+                }
+            }
+            215 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 94,
+                }
+            }
+            216 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 95,
+                }
+            }
+            217 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 96,
+                }
+            }
+            218 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 97,
+                }
+            }
+            219 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 98,
+                }
+            }
+            220 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 99,
+                }
+            }
+            221 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 100,
+                }
+            }
+            222 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 101,
+                }
+            }
+            223 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 102,
+                }
+            }
+            224 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 103,
+                }
+            }
+            225 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 104,
+                }
+            }
+            226 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 105,
+                }
+            }
+            227 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 106,
+                }
+            }
+            228 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 107,
+                }
+            }
+            229 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 108,
+                }
+            }
+            230 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 109,
+                }
+            }
+            231 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 110,
+                }
+            }
+            232 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 111,
+                }
+            }
+            233 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 112,
+                }
+            }
+            234 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 113,
+                }
+            }
+            235 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 114,
+                }
+            }
+            236 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 115,
+                }
+            }
+            237 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 116,
+                }
+            }
+            238 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 117,
+                }
+            }
+            239 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 118,
+                }
+            }
+            240 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 119,
+                }
+            }
+            241 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 120,
+                }
+            }
+            242 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 121,
+                }
+            }
+            243 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 122,
+                }
+            }
+            244 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 123,
+                }
+            }
+            245 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 124,
+                }
+            }
+            246 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 125,
+                }
+            }
+            247 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 126,
+                }
+            }
+            248 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 127,
+                }
+            }
+            249 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 128,
+                }
+            }
+            250 => {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop: 1,
+                    nonterminal_produced: 129,
+                }
+            }
+            251 => __state_machine::SimulatedReduce::Accept,
+            _ => panic!("invalid reduction index {}", __reduce_index)
+        }
+    }
+    pub(crate) struct WhileStmtParser {
+        _priv: (),
+    }
+
+    impl WhileStmtParser {
+        pub(crate) fn new() -> WhileStmtParser {
+            WhileStmtParser {
+                _priv: (),
+            }
+        }
+
+        #[allow(dead_code)]
+        pub(crate) fn parse<
+            __TOKEN: __ToTriple<>,
+            __TOKENS: IntoIterator<Item=__TOKEN>,
+        >(
+            &self,
+            __tokens0: __TOKENS,
+        ) -> Result<ast::WhileStmt, __lalrpop_util::ParseError<usize, Token, LexicalError>>
+        {
+            let __tokens = __tokens0.into_iter();
+            let mut __tokens = __tokens.map(|t| __ToTriple::to_triple(t));
+            __state_machine::Parser::drive(
+                __StateMachine {
+                    __phantom: core::marker::PhantomData::<()>,
+                },
+                __tokens,
+            )
+        }
+    }
+    fn __accepts<
+    >(
+        __error_state: Option<i16>,
+        __states: &[i16],
+        __opt_integer: Option<usize>,
+        _: core::marker::PhantomData<()>,
+    ) -> bool
+    {
+        let mut __states = __states.to_vec();
+        __states.extend(__error_state);
+        loop {
+            let mut __states_len = __states.len();
+            let __top = __states[__states_len - 1];
+            let __action = match __opt_integer {
+                None => __EOF_ACTION[__top as usize],
+                Some(__integer) => __action(__top, __integer),
+            };
+            if __action == 0 { return false; }
+            if __action > 0 { return true; }
+            let (__to_pop, __nt) = match __simulate_reduce(-(__action + 1), core::marker::PhantomData::<()>) {
+                __state_machine::SimulatedReduce::Reduce {
+                    states_to_pop, nonterminal_produced
+                } => (states_to_pop, nonterminal_produced),
+                __state_machine::SimulatedReduce::Accept => return true,
+            };
+            __states_len -= __to_pop;
+            __states.truncate(__states_len);
+            let __top = __states[__states_len - 1];
+            let __next_state = __goto(__top, __nt);
+            __states.push(__next_state);
+        }
+    }
+    pub(crate) fn __reduce<
+    >(
+        __action: i16,
+        __lookahead_start: Option<&usize>,
+        __states: &mut alloc::vec::Vec<i16>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> Option<Result<ast::WhileStmt,__lalrpop_util::ParseError<usize, Token, LexicalError>>>
+    {
+        let (__pop_states, __nonterminal) = match __action {
+            0 => {
+                __reduce0(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            1 => {
+                __reduce1(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            2 => {
+                __reduce2(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            3 => {
+                __reduce3(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            4 => {
+                __reduce4(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            5 => {
+                __reduce5(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            6 => {
+                __reduce6(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            7 => {
+                __reduce7(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            8 => {
+                __reduce8(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            9 => {
+                __reduce9(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            10 => {
+                __reduce10(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            11 => {
+                __reduce11(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            12 => {
+                __reduce12(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            13 => {
+                __reduce13(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            14 => {
+                __reduce14(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            15 => {
+                __reduce15(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            16 => {
+                __reduce16(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            17 => {
+                __reduce17(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            18 => {
+                __reduce18(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            19 => {
+                __reduce19(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            20 => {
+                __reduce20(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            21 => {
+                __reduce21(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            22 => {
+                __reduce22(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            23 => {
+                __reduce23(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            24 => {
+                __reduce24(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            25 => {
+                __reduce25(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            26 => {
+                __reduce26(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            27 => {
+                __reduce27(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            28 => {
+                __reduce28(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            29 => {
+                __reduce29(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            30 => {
+                __reduce30(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            31 => {
+                __reduce31(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            32 => {
+                __reduce32(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            33 => {
+                __reduce33(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            34 => {
+                __reduce34(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            35 => {
+                __reduce35(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            36 => {
+                __reduce36(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            37 => {
+                __reduce37(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            38 => {
+                __reduce38(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            39 => {
+                __reduce39(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            40 => {
+                __reduce40(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            41 => {
+                __reduce41(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            42 => {
+                __reduce42(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            43 => {
+                __reduce43(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            44 => {
+                __reduce44(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            45 => {
+                __reduce45(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            46 => {
+                __reduce46(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            47 => {
+                __reduce47(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            48 => {
+                __reduce48(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            49 => {
+                __reduce49(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            50 => {
+                __reduce50(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            51 => {
+                __reduce51(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            52 => {
+                __reduce52(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            53 => {
+                __reduce53(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            54 => {
+                __reduce54(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            55 => {
+                __reduce55(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            56 => {
+                __reduce56(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            57 => {
+                __reduce57(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            58 => {
+                __reduce58(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            59 => {
+                __reduce59(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            60 => {
+                __reduce60(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            61 => {
+                __reduce61(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            62 => {
+                __reduce62(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            63 => {
+                __reduce63(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            64 => {
+                __reduce64(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            65 => {
+                __reduce65(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            66 => {
+                __reduce66(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            67 => {
+                __reduce67(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            68 => {
+                __reduce68(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            69 => {
+                __reduce69(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            70 => {
+                __reduce70(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            71 => {
+                __reduce71(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            72 => {
+                __reduce72(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            73 => {
+                __reduce73(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            74 => {
+                __reduce74(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            75 => {
+                __reduce75(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            76 => {
+                __reduce76(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            77 => {
+                __reduce77(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            78 => {
+                __reduce78(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            79 => {
+                __reduce79(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            80 => {
+                __reduce80(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            81 => {
+                __reduce81(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            82 => {
+                __reduce82(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            83 => {
+                __reduce83(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            84 => {
+                __reduce84(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            85 => {
+                __reduce85(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            86 => {
+                __reduce86(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            87 => {
+                __reduce87(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            88 => {
+                __reduce88(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            89 => {
+                __reduce89(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            90 => {
+                __reduce90(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            91 => {
+                __reduce91(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            92 => {
+                __reduce92(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            93 => {
+                __reduce93(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            94 => {
+                __reduce94(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            95 => {
+                __reduce95(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            96 => {
+                __reduce96(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            97 => {
+                __reduce97(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            98 => {
+                __reduce98(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            99 => {
+                __reduce99(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            100 => {
+                __reduce100(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            101 => {
+                __reduce101(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            102 => {
+                __reduce102(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            103 => {
+                __reduce103(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            104 => {
+                __reduce104(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            105 => {
+                __reduce105(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            106 => {
+                __reduce106(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            107 => {
+                __reduce107(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            108 => {
+                __reduce108(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            109 => {
+                __reduce109(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            110 => {
+                __reduce110(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            111 => {
+                __reduce111(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            112 => {
+                __reduce112(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            113 => {
+                __reduce113(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            114 => {
+                __reduce114(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            115 => {
+                __reduce115(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            116 => {
+                __reduce116(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            117 => {
+                __reduce117(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            118 => {
+                __reduce118(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            119 => {
+                __reduce119(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            120 => {
+                __reduce120(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            121 => {
+                __reduce121(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            122 => {
+                __reduce122(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            123 => {
+                __reduce123(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            124 => {
+                __reduce124(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            125 => {
+                __reduce125(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            126 => {
+                __reduce126(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            127 => {
+                __reduce127(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            128 => {
+                __reduce128(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            129 => {
+                __reduce129(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            130 => {
+                __reduce130(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            131 => {
+                __reduce131(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            132 => {
+                __reduce132(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            133 => {
+                __reduce133(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            134 => {
+                __reduce134(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            135 => {
+                __reduce135(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            136 => {
+                __reduce136(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            137 => {
+                __reduce137(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            138 => {
+                __reduce138(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            139 => {
+                __reduce139(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            140 => {
+                __reduce140(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            141 => {
+                __reduce141(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            142 => {
+                __reduce142(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            143 => {
+                __reduce143(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            144 => {
+                __reduce144(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            145 => {
+                __reduce145(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            146 => {
+                __reduce146(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            147 => {
+                __reduce147(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            148 => {
+                __reduce148(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            149 => {
+                __reduce149(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            150 => {
+                __reduce150(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            151 => {
+                __reduce151(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            152 => {
+                __reduce152(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            153 => {
+                __reduce153(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            154 => {
+                __reduce154(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            155 => {
+                __reduce155(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            156 => {
+                __reduce156(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            157 => {
+                __reduce157(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            158 => {
+                __reduce158(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            159 => {
+                __reduce159(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            160 => {
+                __reduce160(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            161 => {
+                __reduce161(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            162 => {
+                __reduce162(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            163 => {
+                __reduce163(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            164 => {
+                __reduce164(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            165 => {
+                __reduce165(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            166 => {
+                __reduce166(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            167 => {
+                __reduce167(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            168 => {
+                __reduce168(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            169 => {
+                __reduce169(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            170 => {
+                __reduce170(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            171 => {
+                __reduce171(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            172 => {
+                __reduce172(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            173 => {
+                __reduce173(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            174 => {
+                __reduce174(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            175 => {
+                __reduce175(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            176 => {
+                __reduce176(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            177 => {
+                __reduce177(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            178 => {
+                __reduce178(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            179 => {
+                __reduce179(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            180 => {
+                __reduce180(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            181 => {
+                __reduce181(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            182 => {
+                __reduce182(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            183 => {
+                __reduce183(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            184 => {
+                __reduce184(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            185 => {
+                __reduce185(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            186 => {
+                __reduce186(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            187 => {
+                __reduce187(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            188 => {
+                __reduce188(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            189 => {
+                __reduce189(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            190 => {
+                __reduce190(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            191 => {
+                __reduce191(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            192 => {
+                __reduce192(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            193 => {
+                __reduce193(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            194 => {
+                __reduce194(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            195 => {
+                __reduce195(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            196 => {
+                __reduce196(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            197 => {
+                __reduce197(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            198 => {
+                __reduce198(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            199 => {
+                __reduce199(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            200 => {
+                __reduce200(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            201 => {
+                __reduce201(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            202 => {
+                __reduce202(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            203 => {
+                __reduce203(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            204 => {
+                __reduce204(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            205 => {
+                __reduce205(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            206 => {
+                __reduce206(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            207 => {
+                __reduce207(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            208 => {
+                __reduce208(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            209 => {
+                __reduce209(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            210 => {
+                __reduce210(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            211 => {
+                __reduce211(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            212 => {
+                __reduce212(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            213 => {
+                __reduce213(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            214 => {
+                __reduce214(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            215 => {
+                __reduce215(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            216 => {
+                __reduce216(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            217 => {
+                __reduce217(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            218 => {
+                __reduce218(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            219 => {
+                __reduce219(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            220 => {
+                __reduce220(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            221 => {
+                __reduce221(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            222 => {
+                __reduce222(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            223 => {
+                __reduce223(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            224 => {
+                __reduce224(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            225 => {
+                __reduce225(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            226 => {
+                __reduce226(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            227 => {
+                __reduce227(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            228 => {
+                __reduce228(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            229 => {
+                __reduce229(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            230 => {
+                __reduce230(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            231 => {
+                __reduce231(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            232 => {
+                __reduce232(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            233 => {
+                __reduce233(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            234 => {
+                __reduce234(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            235 => {
+                __reduce235(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            236 => {
+                __reduce236(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            237 => {
+                __reduce237(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            238 => {
+                __reduce238(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            239 => {
+                __reduce239(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            240 => {
+                __reduce240(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            241 => {
+                __reduce241(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            242 => {
+                __reduce242(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            243 => {
+                __reduce243(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            244 => {
+                __reduce244(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            245 => {
+                __reduce245(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            246 => {
+                __reduce246(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            247 => {
+                __reduce247(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            248 => {
+                __reduce248(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            249 => {
+                __reduce249(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            250 => {
+                __reduce250(__lookahead_start, __symbols, core::marker::PhantomData::<()>)
+            }
+            251 => {
+                // __WhileStmt = WhileStmt => ActionFn(12);
+                let __sym0 = __pop_Variant62(__symbols);
+                let __start = __sym0.0;
+                let __end = __sym0.2;
+                let __nt = super::__action12::<>(__sym0);
+                return Some(Ok(__nt));
+            }
+            _ => panic!("invalid action code {}", __action)
+        };
+        let __states_len = __states.len();
+        __states.truncate(__states_len - __pop_states);
+        let __state = *__states.last().unwrap();
+        let __next_state = __goto(__state, __nonterminal);
+        __states.push(__next_state);
+        None
+    }
+    #[inline(never)]
+    fn __symbol_type_mismatch() -> ! {
+        panic!("symbol type mismatch")
+    }
+    fn __pop_Variant22<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, (ast::Ident, ast::StructInitField), usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant22(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant2<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, String, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant2(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant0<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Token, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant0(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant31<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<(ast::Ident, ast::StructInitField)>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant31(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant28<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Expression>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant28(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant29<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::FnParam>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant29(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant12<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Ident>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant12(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant42<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Import>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant42(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant44<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::ModuleStatement>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant44(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant50<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::PathSegment>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant50(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant45<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Statement>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant45(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant30<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::StructField>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant30(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant8<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, Vec<ast::Type>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant8(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant23<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant23(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant4<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<Token>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant4(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant15<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Expression>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant17<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::FnParam>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant17(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant19<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Ident>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant19(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant21<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::StructField>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant21(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant24<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, alloc::vec::Vec<ast::Type>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant24(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant26<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::AssignStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant26(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant27<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::BinaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant27(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant10<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Block, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant10(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant32<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Constant, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant32(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant14<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Expression, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant14(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant34<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::FnCallExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant34(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant16<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::FnParam, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant16(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant36<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::ForStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant36(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant37<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Function, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant37(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant18<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Ident, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant18(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant39<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::IfStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant39(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant40<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Import, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant40(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant41<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::LetStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant41(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant46<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Module, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant46(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant47<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::ModuleStatement, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant47(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant48<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant48(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant49<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::PathSegment, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant49(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant52<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::RefType, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant52(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant54<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::ReturnStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant54(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant55<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Statement, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant55(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant56<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Struct, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant56(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant20<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::StructField, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant20(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant58<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::StructInitExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant58(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant6<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::Type, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant6(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant60<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::UnaryOp, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant60(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant61<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::ValueExpr, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant61(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant62<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, ast::WhileStmt, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant62(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant1<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, bool, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant1(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant59<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant59(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant5<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<Token>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant5(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant13<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<Vec<ast::Ident>>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant13(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant43<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<Vec<ast::Import>>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant43(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant51<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<Vec<ast::PathSegment>>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant51(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant9<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<Vec<ast::Type>>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant9(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant11<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::Block>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant11(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant33<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::Expression>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant33(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant35<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::FnParam>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant35(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant38<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::Ident>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant38(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant53<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::RefType>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant53(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant57<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::StructField>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant57(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant7<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, core::option::Option<ast::Type>, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant7(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant3<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, u128, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant3(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    fn __pop_Variant25<
+    >(
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>
+    ) -> (usize, usize, usize)
+     {
+        match __symbols.pop() {
+            Some((__l, __Symbol::Variant25(__v), __r)) => (__l, __v, __r),
+            _ => __symbol_type_mismatch()
+        }
+    }
+    pub(crate) fn __reduce0<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "*"* =  => ActionFn(151);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action151::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
+        (0, 0)
+    }
+    pub(crate) fn __reduce1<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "*"* = "*"+ => ActionFn(152);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action152::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
+        (1, 0)
+    }
+    pub(crate) fn __reduce2<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "*"+ = "*" => ActionFn(173);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action173::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
+        (1, 1)
+    }
+    pub(crate) fn __reduce3<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "*"+ = "*"+, "*" => ActionFn(174);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant4(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action174::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant4(__nt), __end));
+        (2, 1)
+    }
+    pub(crate) fn __reduce4<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "extern"? = "extern" => ActionFn(141);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action141::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
+        (1, 2)
+    }
+    pub(crate) fn __reduce5<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "extern"? =  => ActionFn(142);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action142::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
+        (0, 2)
+    }
+    pub(crate) fn __reduce6<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "mut"? = "mut" => ActionFn(153);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action153::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
+        (1, 3)
+    }
+    pub(crate) fn __reduce7<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "mut"? =  => ActionFn(154);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action154::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
+        (0, 3)
+    }
+    pub(crate) fn __reduce8<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "pub"? = "pub" => ActionFn(143);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action143::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
+        (1, 4)
+    }
+    pub(crate) fn __reduce9<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // "pub"? =  => ActionFn(144);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action144::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant5(__nt), __end));
+        (0, 4)
+    }
+    pub(crate) fn __reduce10<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("->" <Type>) = "->", Type => ActionFn(139);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action139::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 5)
+    }
+    pub(crate) fn __reduce11<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("->" <Type>)? = "->", Type => ActionFn(226);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action226::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (2, 6)
+    }
+    pub(crate) fn __reduce12<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("->" <Type>)? =  => ActionFn(138);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action138::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant7(__nt), __end));
+        (0, 6)
+    }
+    pub(crate) fn __reduce13<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("<" <Comma<Type>> ">") = "<", Comma<Type>, ">" => ActionFn(136);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant8(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action136::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant8(__nt), __end));
+        (3, 7)
+    }
+    pub(crate) fn __reduce14<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("<" <Comma<Type>> ">")? = "<", Comma<Type>, ">" => ActionFn(235);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant8(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action235::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant9(__nt), __end));
+        (3, 8)
+    }
+    pub(crate) fn __reduce15<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("<" <Comma<Type>> ">")? =  => ActionFn(135);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action135::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant9(__nt), __end));
+        (0, 8)
+    }
+    pub(crate) fn __reduce16<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("else" <Block>) = "else", Block => ActionFn(148);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant10(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action148::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant10(__nt), __end));
+        (2, 9)
+    }
+    pub(crate) fn __reduce17<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("else" <Block>)? = "else", Block => ActionFn(238);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant10(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action238::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant11(__nt), __end));
+        (2, 10)
+    }
+    pub(crate) fn __reduce18<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("else" <Block>)? =  => ActionFn(147);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action147::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant11(__nt), __end));
+        (0, 10)
+    }
+    pub(crate) fn __reduce19<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("{" <Comma<Ident>> "}") = "{", Comma<Ident>, "}" => ActionFn(130);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant12(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action130::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant12(__nt), __end));
+        (3, 11)
+    }
+    pub(crate) fn __reduce20<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("{" <Comma<Ident>> "}")? = "{", Comma<Ident>, "}" => ActionFn(241);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant12(__symbols);
+        let __sym0 = __pop_Variant0(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action241::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant13(__nt), __end));
+        (3, 12)
+    }
+    pub(crate) fn __reduce21<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // ("{" <Comma<Ident>> "}")? =  => ActionFn(129);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action129::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant13(__nt), __end));
+        (0, 12)
+    }
+    pub(crate) fn __reduce22<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Expression> ",") = Expression, "," => ActionFn(172);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action172::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant14(__nt), __end));
+        (2, 13)
+    }
+    pub(crate) fn __reduce23<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Expression> ",")* =  => ActionFn(170);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action170::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
+        (0, 14)
+    }
+    pub(crate) fn __reduce24<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Expression> ",")* = (<Expression> ",")+ => ActionFn(171);
+        let __sym0 = __pop_Variant15(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action171::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
+        (1, 14)
+    }
+    pub(crate) fn __reduce25<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Expression> ",")+ = Expression, "," => ActionFn(244);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant14(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action244::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
+        (2, 15)
+    }
+    pub(crate) fn __reduce26<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Expression> ",")+ = (<Expression> ",")+, Expression, "," => ActionFn(245);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant14(__symbols);
+        let __sym0 = __pop_Variant15(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action245::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant15(__nt), __end));
+        (3, 15)
+    }
+    pub(crate) fn __reduce27<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<FnParam> ",") = FnParam, "," => ActionFn(184);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action184::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant16(__nt), __end));
+        (2, 16)
+    }
+    pub(crate) fn __reduce28<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<FnParam> ",")* =  => ActionFn(182);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action182::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant17(__nt), __end));
+        (0, 17)
+    }
+    pub(crate) fn __reduce29<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<FnParam> ",")* = (<FnParam> ",")+ => ActionFn(183);
+        let __sym0 = __pop_Variant17(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action183::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant17(__nt), __end));
+        (1, 17)
+    }
+    pub(crate) fn __reduce30<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<FnParam> ",")+ = FnParam, "," => ActionFn(248);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant16(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action248::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant17(__nt), __end));
+        (2, 18)
+    }
+    pub(crate) fn __reduce31<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<FnParam> ",")+ = (<FnParam> ",")+, FnParam, "," => ActionFn(249);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant16(__symbols);
+        let __sym0 = __pop_Variant17(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action249::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant17(__nt), __end));
+        (3, 18)
+    }
+    pub(crate) fn __reduce32<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> ",") = Ident, "," => ActionFn(197);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action197::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant18(__nt), __end));
+        (2, 19)
+    }
+    pub(crate) fn __reduce33<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> ",")* =  => ActionFn(195);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action195::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (0, 20)
+    }
+    pub(crate) fn __reduce34<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> ",")* = (<Ident> ",")+ => ActionFn(196);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action196::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (1, 20)
+    }
+    pub(crate) fn __reduce35<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> ",")+ = Ident, "," => ActionFn(252);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action252::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (2, 21)
+    }
+    pub(crate) fn __reduce36<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> ",")+ = (<Ident> ",")+, Ident, "," => ActionFn(253);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action253::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (3, 21)
+    }
+    pub(crate) fn __reduce37<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> "::") = Ident, "::" => ActionFn(192);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action192::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant18(__nt), __end));
+        (2, 22)
+    }
+    pub(crate) fn __reduce38<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> "::")* =  => ActionFn(190);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action190::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (0, 23)
+    }
+    pub(crate) fn __reduce39<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> "::")* = (<Ident> "::")+ => ActionFn(191);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action191::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (1, 23)
+    }
+    pub(crate) fn __reduce40<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> "::")+ = Ident, "::" => ActionFn(256);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action256::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (2, 24)
+    }
+    pub(crate) fn __reduce41<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Ident> "::")+ = (<Ident> "::")+, Ident, "::" => ActionFn(257);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant19(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action257::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant19(__nt), __end));
+        (3, 24)
+    }
+    pub(crate) fn __reduce42<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructField> ",") = StructField, "," => ActionFn(189);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action189::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant20(__nt), __end));
+        (2, 25)
+    }
+    pub(crate) fn __reduce43<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructField> ",")* =  => ActionFn(187);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action187::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant21(__nt), __end));
+        (0, 26)
+    }
+    pub(crate) fn __reduce44<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructField> ",")* = (<StructField> ",")+ => ActionFn(188);
+        let __sym0 = __pop_Variant21(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action188::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant21(__nt), __end));
+        (1, 26)
+    }
+    pub(crate) fn __reduce45<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructField> ",")+ = StructField, "," => ActionFn(260);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant20(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action260::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant21(__nt), __end));
+        (2, 27)
+    }
+    pub(crate) fn __reduce46<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructField> ",")+ = (<StructField> ",")+, StructField, "," => ActionFn(261);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant20(__symbols);
+        let __sym0 = __pop_Variant21(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action261::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant21(__nt), __end));
+        (3, 27)
+    }
+    pub(crate) fn __reduce47<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructInitField> ",") = StructInitField, "," => ActionFn(179);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action179::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant22(__nt), __end));
+        (2, 28)
+    }
+    pub(crate) fn __reduce48<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructInitField> ",")* =  => ActionFn(177);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action177::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant23(__nt), __end));
+        (0, 29)
+    }
+    pub(crate) fn __reduce49<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructInitField> ",")* = (<StructInitField> ",")+ => ActionFn(178);
+        let __sym0 = __pop_Variant23(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action178::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant23(__nt), __end));
+        (1, 29)
+    }
+    pub(crate) fn __reduce50<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructInitField> ",")+ = StructInitField, "," => ActionFn(264);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant22(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action264::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant23(__nt), __end));
+        (2, 30)
+    }
+    pub(crate) fn __reduce51<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<StructInitField> ",")+ = (<StructInitField> ",")+, StructInitField, "," => ActionFn(265);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant22(__symbols);
+        let __sym0 = __pop_Variant23(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action265::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant23(__nt), __end));
+        (3, 30)
+    }
+    pub(crate) fn __reduce52<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Type> ",") = Type, "," => ActionFn(169);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action169::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (2, 31)
+    }
+    pub(crate) fn __reduce53<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Type> ",")* =  => ActionFn(167);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action167::<>(&__start, &__end);
+        __symbols.push((__start, __Symbol::Variant24(__nt), __end));
+        (0, 32)
+    }
+    pub(crate) fn __reduce54<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Type> ",")* = (<Type> ",")+ => ActionFn(168);
+        let __sym0 = __pop_Variant24(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action168::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant24(__nt), __end));
+        (1, 32)
+    }
+    pub(crate) fn __reduce55<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Type> ",")+ = Type, "," => ActionFn(268);
+        assert!(__symbols.len() >= 2);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym1.2;
+        let __nt = super::__action268::<>(__sym0, __sym1);
+        __symbols.push((__start, __Symbol::Variant24(__nt), __end));
+        (2, 33)
+    }
+    pub(crate) fn __reduce56<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // (<Type> ",")+ = (<Type> ",")+, Type, "," => ActionFn(269);
+        assert!(__symbols.len() >= 3);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant6(__symbols);
+        let __sym0 = __pop_Variant24(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym2.2;
+        let __nt = super::__action269::<>(__sym0, __sym1, __sym2);
+        __symbols.push((__start, __Symbol::Variant24(__nt), __end));
+        (3, 33)
+    }
+    pub(crate) fn __reduce57<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // @L =  => ActionFn(164);
+        let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
+        let __end = __start.clone();
+        let __nt = super::__action164::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 34)
     }
@@ -579174,10 +603619,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // @R =  => ActionFn(160);
+        // @R =  => ActionFn(163);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action160::<>(&__start, &__end);
+        let __nt = super::__action163::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant25(__nt), __end));
         (0, 35)
     }
@@ -579188,14 +603633,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", Expression => ActionFn(331);
+        // AssignStmt = PathExpr, "=", Expression => ActionFn(336);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action331::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action336::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -579206,7 +603651,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(332);
+        // AssignStmt = "*"+, PathExpr, "=", Expression => ActionFn(337);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant14(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -579214,7 +603659,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action332::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action337::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -579225,14 +603670,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(333);
+        // AssignStmt = PathExpr, "=", StructInitExpr => ActionFn(338);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action333::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action338::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (3, 36)
     }
@@ -579243,7 +603688,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(334);
+        // AssignStmt = "*"+, PathExpr, "=", StructInitExpr => ActionFn(339);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant58(__symbols);
         let __sym2 = __pop_Variant0(__symbols);
@@ -579251,7 +603696,7 @@
         let __sym0 = __pop_Variant4(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action334::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action339::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
         (4, 36)
     }
@@ -579262,11 +603707,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "==" => ActionFn(335);
+        // BinaryFirstLvlOp = "==" => ActionFn(340);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action335::<>(__sym0);
+        let __nt = super::__action340::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579277,11 +603722,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "!=" => ActionFn(336);
+        // BinaryFirstLvlOp = "!=" => ActionFn(341);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action336::<>(__sym0);
+        let __nt = super::__action341::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579292,11 +603737,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<" => ActionFn(337);
+        // BinaryFirstLvlOp = "<" => ActionFn(342);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action337::<>(__sym0);
+        let __nt = super::__action342::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579307,11 +603752,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">" => ActionFn(338);
+        // BinaryFirstLvlOp = ">" => ActionFn(343);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action338::<>(__sym0);
+        let __nt = super::__action343::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579322,11 +603767,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "<=" => ActionFn(339);
+        // BinaryFirstLvlOp = "<=" => ActionFn(344);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action339::<>(__sym0);
+        let __nt = super::__action344::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579337,11 +603782,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = ">=" => ActionFn(340);
+        // BinaryFirstLvlOp = ">=" => ActionFn(345);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action340::<>(__sym0);
+        let __nt = super::__action345::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579352,11 +603797,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "&&" => ActionFn(341);
+        // BinaryFirstLvlOp = "&&" => ActionFn(346);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action341::<>(__sym0);
+        let __nt = super::__action346::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579367,11 +603812,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryFirstLvlOp = "||" => ActionFn(342);
+        // BinaryFirstLvlOp = "||" => ActionFn(347);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action342::<>(__sym0);
+        let __nt = super::__action347::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 37)
     }
@@ -579382,11 +603827,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "/" => ActionFn(343);
+        // BinarySecondLvlOp = "/" => ActionFn(348);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action343::<>(__sym0);
+        let __nt = super::__action348::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -579397,11 +603842,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "*" => ActionFn(344);
+        // BinarySecondLvlOp = "*" => ActionFn(349);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action344::<>(__sym0);
+        let __nt = super::__action349::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -579412,11 +603857,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinarySecondLvlOp = "%" => ActionFn(345);
+        // BinarySecondLvlOp = "%" => ActionFn(350);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action345::<>(__sym0);
+        let __nt = super::__action350::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 38)
     }
@@ -579427,11 +603872,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "+" => ActionFn(346);
+        // BinaryThirdLvlOp = "+" => ActionFn(351);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action346::<>(__sym0);
+        let __nt = super::__action351::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -579442,11 +603887,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "-" => ActionFn(347);
+        // BinaryThirdLvlOp = "-" => ActionFn(352);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action347::<>(__sym0);
+        let __nt = super::__action352::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -579457,11 +603902,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "&" => ActionFn(348);
+        // BinaryThirdLvlOp = "&" => ActionFn(353);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action348::<>(__sym0);
+        let __nt = super::__action353::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -579472,11 +603917,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "|" => ActionFn(349);
+        // BinaryThirdLvlOp = "|" => ActionFn(354);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action349::<>(__sym0);
+        let __nt = super::__action354::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -579487,11 +603932,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // BinaryThirdLvlOp = "^" => ActionFn(350);
+        // BinaryThirdLvlOp = "^" => ActionFn(355);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action350::<>(__sym0);
+        let __nt = super::__action355::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
         (1, 39)
     }
@@ -579502,14 +603947,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Block = "{", List<Statement>, "}" => ActionFn(351);
+        // Block = "{", List<Statement>, "}" => ActionFn(356);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant45(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action351::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action356::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
         (3, 40)
     }
@@ -579520,11 +603965,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = Expression => ActionFn(393);
+        // Comma<Expression> = Expression => ActionFn(400);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action393::<>(__sym0);
+        let __nt = super::__action400::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -579535,10 +603980,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> =  => ActionFn(394);
+        // Comma<Expression> =  => ActionFn(401);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action394::<>(&__start, &__end);
+        let __nt = super::__action401::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (0, 41)
     }
@@ -579549,13 +603994,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(395);
+        // Comma<Expression> = (<Expression> ",")+, Expression => ActionFn(402);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action395::<>(__sym0, __sym1);
+        let __nt = super::__action402::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (2, 41)
     }
@@ -579566,11 +604011,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Expression> = (<Expression> ",")+ => ActionFn(396);
+        // Comma<Expression> = (<Expression> ",")+ => ActionFn(403);
         let __sym0 = __pop_Variant15(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action396::<>(__sym0);
+        let __nt = super::__action403::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant28(__nt), __end));
         (1, 41)
     }
@@ -579581,11 +604026,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = FnParam => ActionFn(399);
+        // Comma<FnParam> = FnParam => ActionFn(406);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action399::<>(__sym0);
+        let __nt = super::__action406::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -579596,10 +604041,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> =  => ActionFn(400);
+        // Comma<FnParam> =  => ActionFn(407);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action400::<>(&__start, &__end);
+        let __nt = super::__action407::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (0, 42)
     }
@@ -579610,13 +604055,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(401);
+        // Comma<FnParam> = (<FnParam> ",")+, FnParam => ActionFn(408);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant16(__symbols);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action401::<>(__sym0, __sym1);
+        let __nt = super::__action408::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (2, 42)
     }
@@ -579627,11 +604072,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(402);
+        // Comma<FnParam> = (<FnParam> ",")+ => ActionFn(409);
         let __sym0 = __pop_Variant17(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action402::<>(__sym0);
+        let __nt = super::__action409::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant29(__nt), __end));
         (1, 42)
     }
@@ -579642,11 +604087,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = Ident => ActionFn(403);
+        // Comma<Ident> = Ident => ActionFn(410);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action403::<>(__sym0);
+        let __nt = super::__action410::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -579657,10 +604102,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> =  => ActionFn(404);
+        // Comma<Ident> =  => ActionFn(411);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action404::<>(&__start, &__end);
+        let __nt = super::__action411::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 43)
     }
@@ -579671,13 +604116,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(405);
+        // Comma<Ident> = (<Ident> ",")+, Ident => ActionFn(412);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action405::<>(__sym0, __sym1);
+        let __nt = super::__action412::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 43)
     }
@@ -579688,11 +604133,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Ident> = (<Ident> ",")+ => ActionFn(406);
+        // Comma<Ident> = (<Ident> ",")+ => ActionFn(413);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action406::<>(__sym0);
+        let __nt = super::__action413::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 43)
     }
@@ -579703,11 +604148,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = StructField => ActionFn(419);
+        // Comma<StructField> = StructField => ActionFn(426);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action419::<>(__sym0);
+        let __nt = super::__action426::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -579718,10 +604163,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> =  => ActionFn(420);
+        // Comma<StructField> =  => ActionFn(427);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action420::<>(&__start, &__end);
+        let __nt = super::__action427::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (0, 44)
     }
@@ -579732,13 +604177,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(421);
+        // Comma<StructField> = (<StructField> ",")+, StructField => ActionFn(428);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant20(__symbols);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action421::<>(__sym0, __sym1);
+        let __nt = super::__action428::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (2, 44)
     }
@@ -579749,11 +604194,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructField> = (<StructField> ",")+ => ActionFn(422);
+        // Comma<StructField> = (<StructField> ",")+ => ActionFn(429);
         let __sym0 = __pop_Variant21(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action422::<>(__sym0);
+        let __nt = super::__action429::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant30(__nt), __end));
         (1, 44)
     }
@@ -579764,11 +604209,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = StructInitField => ActionFn(423);
+        // Comma<StructInitField> = StructInitField => ActionFn(430);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action423::<>(__sym0);
+        let __nt = super::__action430::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -579779,10 +604224,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> =  => ActionFn(424);
+        // Comma<StructInitField> =  => ActionFn(431);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action424::<>(&__start, &__end);
+        let __nt = super::__action431::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (0, 45)
     }
@@ -579793,13 +604238,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(425);
+        // Comma<StructInitField> = (<StructInitField> ",")+, StructInitField => ActionFn(432);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant22(__symbols);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action425::<>(__sym0, __sym1);
+        let __nt = super::__action432::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (2, 45)
     }
@@ -579810,11 +604255,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(426);
+        // Comma<StructInitField> = (<StructInitField> ",")+ => ActionFn(433);
         let __sym0 = __pop_Variant23(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action426::<>(__sym0);
+        let __nt = super::__action433::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant31(__nt), __end));
         (1, 45)
     }
@@ -579825,11 +604270,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = Type => ActionFn(427);
+        // Comma<Type> = Type => ActionFn(434);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action427::<>(__sym0);
+        let __nt = super::__action434::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -579840,10 +604285,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> =  => ActionFn(428);
+        // Comma<Type> =  => ActionFn(435);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action428::<>(&__start, &__end);
+        let __nt = super::__action435::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (0, 46)
     }
@@ -579854,13 +604299,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+, Type => ActionFn(429);
+        // Comma<Type> = (<Type> ",")+, Type => ActionFn(436);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant6(__symbols);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action429::<>(__sym0, __sym1);
+        let __nt = super::__action436::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (2, 46)
     }
@@ -579871,11 +604316,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Comma<Type> = (<Type> ",")+ => ActionFn(430);
+        // Comma<Type> = (<Type> ",")+ => ActionFn(437);
         let __sym0 = __pop_Variant24(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action430::<>(__sym0);
+        let __nt = super::__action437::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant8(__nt), __end));
         (1, 46)
     }
@@ -579886,7 +604331,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(352);
+        // Constant = "const", Ident, ":", Type, "=", Expression, ";" => ActionFn(357);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant0(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -579897,7 +604342,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action352::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
         (7, 47)
     }
@@ -579908,11 +604353,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = Ident => ActionFn(407);
+        // DoubleColon<Ident> = Ident => ActionFn(414);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action407::<>(__sym0);
+        let __nt = super::__action414::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -579923,10 +604368,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> =  => ActionFn(408);
+        // DoubleColon<Ident> =  => ActionFn(415);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action408::<>(&__start, &__end);
+        let __nt = super::__action415::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (0, 48)
     }
@@ -579937,13 +604382,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(409);
+        // DoubleColon<Ident> = (<Ident> "::")+, Ident => ActionFn(416);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action409::<>(__sym0, __sym1);
+        let __nt = super::__action416::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (2, 48)
     }
@@ -579954,11 +604399,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(410);
+        // DoubleColon<Ident> = (<Ident> "::")+ => ActionFn(417);
         let __sym0 = __pop_Variant19(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action410::<>(__sym0);
+        let __nt = super::__action417::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant12(__nt), __end));
         (1, 48)
     }
@@ -579969,14 +604414,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(78);
+        // Expression = Expression, BinaryThirdLvlOp, Expression3 => ActionFn(81);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action78::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action81::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 49)
     }
@@ -579987,11 +604432,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression = Expression3 => ActionFn(79);
+        // Expression = Expression3 => ActionFn(82);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action79::<>(__sym0);
+        let __nt = super::__action82::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 49)
     }
@@ -580002,11 +604447,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression0 = Term => ActionFn(68);
+        // Expression0 = Term => ActionFn(71);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action68::<>(__sym0);
+        let __nt = super::__action71::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 50)
     }
@@ -580017,14 +604462,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", "mut", Expression1 => ActionFn(69);
+        // Expression1 = "&", "mut", Expression1 => ActionFn(72);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action72::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 51)
     }
@@ -580035,13 +604480,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "&", Expression1 => ActionFn(70);
+        // Expression1 = "&", Expression1 => ActionFn(73);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action70::<>(__sym0, __sym1);
+        let __nt = super::__action73::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -580052,13 +604497,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = "*", Expression1 => ActionFn(71);
+        // Expression1 = "*", Expression1 => ActionFn(74);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action71::<>(__sym0, __sym1);
+        let __nt = super::__action74::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -580069,13 +604514,13 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = UnaryOp, Expression1 => ActionFn(72);
+        // Expression1 = UnaryOp, Expression1 => ActionFn(75);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action72::<>(__sym0, __sym1);
+        let __nt = super::__action75::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (2, 51)
     }
@@ -580086,11 +604531,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression1 = Expression0 => ActionFn(73);
+        // Expression1 = Expression0 => ActionFn(76);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action73::<>(__sym0);
+        let __nt = super::__action76::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 51)
     }
@@ -580101,14 +604546,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(74);
+        // Expression2 = Expression2, BinaryFirstLvlOp, Expression1 => ActionFn(77);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action74::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action77::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 52)
     }
@@ -580119,11 +604564,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression2 = Expression1 => ActionFn(75);
+        // Expression2 = Expression1 => ActionFn(78);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action75::<>(__sym0);
+        let __nt = super::__action78::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 52)
     }
@@ -580134,14 +604579,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(76);
+        // Expression3 = Expression3, BinarySecondLvlOp, Expression2 => ActionFn(79);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant27(__symbols);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action76::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action79::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (3, 53)
     }
@@ -580152,11 +604597,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression3 = Expression2 => ActionFn(77);
+        // Expression3 = Expression2 => ActionFn(80);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action77::<>(__sym0);
+        let __nt = super::__action80::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
         (1, 53)
     }
@@ -580167,11 +604612,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? = Expression => ActionFn(146);
+        // Expression? = Expression => ActionFn(149);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action146::<>(__sym0);
+        let __nt = super::__action149::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (1, 54)
     }
@@ -580182,10 +604627,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Expression? =  => ActionFn(147);
+        // Expression? =  => ActionFn(150);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action147::<>(&__start, &__end);
+        let __nt = super::__action150::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant33(__nt), __end));
         (0, 54)
     }
@@ -580196,7 +604641,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(353);
+        // FnCallExpr = Ident, "(", Comma<Expression>, ")" => ActionFn(358);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant28(__symbols);
@@ -580204,7 +604649,7 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action353::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
         (4, 55)
     }
@@ -580215,14 +604660,14 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam = Ident, ":", Type => ActionFn(354);
+        // FnParam = Ident, ":", Type => ActionFn(359);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action354::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action359::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
         (3, 56)
     }
@@ -580233,11 +604678,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? = FnParam => ActionFn(177);
+        // FnParam? = FnParam => ActionFn(180);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action177::<>(__sym0);
+        let __nt = super::__action180::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (1, 57)
     }
@@ -580248,10 +604693,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // FnParam? =  => ActionFn(178);
+        // FnParam? =  => ActionFn(181);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action178::<>(&__start, &__end);
+        let __nt = super::__action181::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant35(__nt), __end));
         (0, 57)
     }
@@ -580262,7 +604707,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(355);
+        // ForStmt = "for", Ident, "in", Expression, Block => ActionFn(360);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant14(__symbols);
@@ -580271,7 +604716,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action355::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (5, 58)
     }
@@ -580282,7 +604727,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(356);
+        // ForStmt = "for", Ident, "in", Expression, "..", Expression, Block => ActionFn(361);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant14(__symbols);
@@ -580293,7 +604738,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action356::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
         (7, 58)
     }
@@ -580304,7 +604749,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(357);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(362);
         assert!(__symbols.len() >= 10);
         let __sym9 = __pop_Variant10(__symbols);
         let __sym8 = __pop_Variant6(__symbols);
@@ -580318,7 +604763,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym9.2;
-        let __nt = super::__action357::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
+        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8, __sym9);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (10, 59)
     }
@@ -580329,7 +604774,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(358);
+        // Function = "pub", "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(363);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant0(__symbols);
@@ -580341,7 +604786,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action358::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -580352,7 +604797,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(359);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(364);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -580365,7 +604810,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action359::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -580376,7 +604821,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(360);
+        // Function = "extern", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(365);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580387,7 +604832,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action360::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action365::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -580398,7 +604843,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(361);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(366);
         assert!(__symbols.len() >= 9);
         let __sym8 = __pop_Variant10(__symbols);
         let __sym7 = __pop_Variant6(__symbols);
@@ -580411,7 +604856,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym8.2;
-        let __nt = super::__action361::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
+        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (9, 59)
     }
@@ -580422,7 +604867,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(362);
+        // Function = "pub", "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(367);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant10(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580433,7 +604878,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action362::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action367::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (7, 59)
     }
@@ -580444,7 +604889,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(363);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", "->", Type, Block => ActionFn(368);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant10(__symbols);
         let __sym6 = __pop_Variant6(__symbols);
@@ -580456,7 +604901,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action363::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (8, 59)
     }
@@ -580467,7 +604912,7 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(364);
+        // Function = "fn", Ident, "(", Comma<FnParam>, ")", Block => ActionFn(369);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant10(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -580477,7 +604922,7 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action364::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action369::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
         (6, 59)
     }
@@ -580488,11 +604933,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident = "identifier" => ActionFn(365);
+        // Ident = "identifier" => ActionFn(370);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action365::<>(__sym0);
+        let __nt = super::__action370::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
         (1, 60)
     }
@@ -580503,11 +604948,11 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? = Ident => ActionFn(190);
+        // Ident? = Ident => ActionFn(193);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action190::<>(__sym0);
+        let __nt = super::__action193::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (1, 61)
     }
@@ -580518,10 +604963,10 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Ident? =  => ActionFn(191);
+        // Ident? =  => ActionFn(194);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action191::<>(&__start, &__end);
+        let __nt = super::__action194::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant38(__nt), __end));
         (0, 61)
     }
@@ -580532,7 +604977,42 @@
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(366);
+        // IdentWithOptionalType = Ident => ActionFn(371);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action371::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 62)
+    }
+    pub(crate) fn __reduce141<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IdentWithOptionalType = Ident, "::", "<", Comma<Type>, ">" => ActionFn(372);
+        assert!(__symbols.len() >= 5);
+        let __sym4 = __pop_Variant0(__symbols);
+        let __sym3 = __pop_Variant8(__symbols);
+        let __sym2 = __pop_Variant0(__symbols);
+        let __sym1 = __pop_Variant0(__symbols);
+        let __sym0 = __pop_Variant18(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym4.2;
+        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (5, 62)
+    }
+    pub(crate) fn __reduce142<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // IfStmt = "if", Expression, Block, "else", Block => ActionFn(373);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant10(__symbols);
         let __sym3 = __pop_Variant0(__symbols);
@@ -580541,36 +605021,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action366::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (5, 62)
+        (5, 63)
     }
-    pub(crate) fn __reduce141<
+    pub(crate) fn __reduce143<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // IfStmt = "if", Expression, Block => ActionFn(367);
+        // IfStmt = "if", Expression, Block => ActionFn(374);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action367::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action374::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (3, 62)
+        (3, 63)
     }
-    pub(crate) fn __reduce142<
+    pub(crate) fn __reduce144<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(368);
+        // Import = "use", DoubleColon<Ident>, "{", Comma<Ident>, "}", ";" => ActionFn(375);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -580580,36 +605060,36 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action368::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action375::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (6, 63)
+        (6, 64)
     }
-    pub(crate) fn __reduce143<
+    pub(crate) fn __reduce145<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(369);
+        // Import = "use", DoubleColon<Ident>, ";" => ActionFn(376);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant12(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action369::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (3, 63)
+        (3, 64)
     }
-    pub(crate) fn __reduce144<
+    pub(crate) fn __reduce146<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(370);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", Expression => ActionFn(377);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant14(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580620,18 +605100,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action370::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action377::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce145<
+    pub(crate) fn __reduce147<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(371);
+        // LetStmt = "let", Ident, ":", Type, "=", Expression => ActionFn(378);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant14(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -580641,18 +605121,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action371::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce146<
+    pub(crate) fn __reduce148<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(372);
+        // LetStmt = "let", "mut", Ident, ":", Type, "=", StructInitExpr => ActionFn(379);
         assert!(__symbols.len() >= 7);
         let __sym6 = __pop_Variant58(__symbols);
         let __sym5 = __pop_Variant0(__symbols);
@@ -580663,18 +605143,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym6.2;
-        let __nt = super::__action372::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
+        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (7, 64)
+        (7, 65)
     }
-    pub(crate) fn __reduce147<
+    pub(crate) fn __reduce149<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(373);
+        // LetStmt = "let", Ident, ":", Type, "=", StructInitExpr => ActionFn(380);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant58(__symbols);
         let __sym4 = __pop_Variant0(__symbols);
@@ -580684,143 +605164,143 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action373::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action380::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (6, 64)
+        (6, 65)
     }
-    pub(crate) fn __reduce148<
+    pub(crate) fn __reduce150<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = Import => ActionFn(123);
+        // List<Import> = Import => ActionFn(126);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action123::<>(__sym0);
+        let __nt = super::__action126::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (1, 65)
+        (1, 66)
     }
-    pub(crate) fn __reduce149<
+    pub(crate) fn __reduce151<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import> = List<Import>, Import => ActionFn(124);
+        // List<Import> = List<Import>, Import => ActionFn(127);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant40(__symbols);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action124::<>(__sym0, __sym1);
+        let __nt = super::__action127::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant42(__nt), __end));
-        (2, 65)
+        (2, 66)
     }
-    pub(crate) fn __reduce150<
+    pub(crate) fn __reduce152<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? = List<Import> => ActionFn(121);
+        // List<Import>? = List<Import> => ActionFn(124);
         let __sym0 = __pop_Variant42(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action121::<>(__sym0);
+        let __nt = super::__action124::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (1, 66)
+        (1, 67)
     }
-    pub(crate) fn __reduce151<
+    pub(crate) fn __reduce153<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Import>? =  => ActionFn(122);
+        // List<Import>? =  => ActionFn(125);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action122::<>(&__start, &__end);
+        let __nt = super::__action125::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant43(__nt), __end));
-        (0, 66)
+        (0, 67)
     }
-    pub(crate) fn __reduce152<
+    pub(crate) fn __reduce154<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = ModuleStatement => ActionFn(119);
+        // List<ModuleStatement> = ModuleStatement => ActionFn(122);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action119::<>(__sym0);
+        let __nt = super::__action122::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (1, 67)
+        (1, 68)
     }
-    pub(crate) fn __reduce153<
+    pub(crate) fn __reduce155<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(120);
+        // List<ModuleStatement> = List<ModuleStatement>, ModuleStatement => ActionFn(123);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant47(__symbols);
         let __sym0 = __pop_Variant44(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action120::<>(__sym0, __sym1);
+        let __nt = super::__action123::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant44(__nt), __end));
-        (2, 67)
+        (2, 68)
     }
-    pub(crate) fn __reduce154<
+    pub(crate) fn __reduce156<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = Statement => ActionFn(153);
+        // List<Statement> = Statement => ActionFn(156);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action153::<>(__sym0);
+        let __nt = super::__action156::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (1, 68)
+        (1, 69)
     }
-    pub(crate) fn __reduce155<
+    pub(crate) fn __reduce157<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // List<Statement> = List<Statement>, Statement => ActionFn(154);
+        // List<Statement> = List<Statement>, Statement => ActionFn(157);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant55(__symbols);
         let __sym0 = __pop_Variant45(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action154::<>(__sym0, __sym1);
+        let __nt = super::__action157::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant45(__nt), __end));
-        (2, 68)
+        (2, 69)
     }
-    pub(crate) fn __reduce156<
+    pub(crate) fn __reduce158<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(411);
+        // Module = "mod", Ident, "{", List<Import>, List<ModuleStatement>, "}" => ActionFn(418);
         assert!(__symbols.len() >= 6);
         let __sym5 = __pop_Variant0(__symbols);
         let __sym4 = __pop_Variant44(__symbols);
@@ -580830,18 +605310,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym5.2;
-        let __nt = super::__action411::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
+        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (6, 69)
+        (6, 70)
     }
-    pub(crate) fn __reduce157<
+    pub(crate) fn __reduce159<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(412);
+        // Module = "mod", Ident, "{", List<ModuleStatement>, "}" => ActionFn(419);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant44(__symbols);
@@ -580850,412 +605330,412 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action412::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action419::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (5, 69)
+        (5, 70)
     }
-    pub(crate) fn __reduce158<
+    pub(crate) fn __reduce160<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Function => ActionFn(115);
+        // ModuleStatement = Function => ActionFn(118);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action115::<>(__sym0);
+        let __nt = super::__action118::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce159<
+    pub(crate) fn __reduce161<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Constant => ActionFn(116);
+        // ModuleStatement = Constant => ActionFn(119);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action116::<>(__sym0);
+        let __nt = super::__action119::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce160<
+    pub(crate) fn __reduce162<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Struct => ActionFn(117);
+        // ModuleStatement = Struct => ActionFn(120);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action117::<>(__sym0);
+        let __nt = super::__action120::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce161<
+    pub(crate) fn __reduce163<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ModuleStatement = Module => ActionFn(118);
+        // ModuleStatement = Module => ActionFn(121);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action118::<>(__sym0);
+        let __nt = super::__action121::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 70)
+        (1, 71)
     }
-    pub(crate) fn __reduce162<
+    pub(crate) fn __reduce164<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident, PathSegments => ActionFn(413);
+        // PathExpr = Ident, PathSegments => ActionFn(420);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant50(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action413::<>(__sym0, __sym1);
+        let __nt = super::__action420::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (2, 71)
+        (2, 72)
     }
-    pub(crate) fn __reduce163<
+    pub(crate) fn __reduce165<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathExpr = Ident => ActionFn(414);
+        // PathExpr = Ident => ActionFn(421);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action414::<>(__sym0);
+        let __nt = super::__action421::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 71)
+        (1, 72)
     }
-    pub(crate) fn __reduce164<
+    pub(crate) fn __reduce166<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = ".", Ident => ActionFn(43);
+        // PathSegment = ".", Ident => ActionFn(46);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action43::<>(__sym0, __sym1);
+        let __nt = super::__action46::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (2, 72)
+        (2, 73)
     }
-    pub(crate) fn __reduce165<
+    pub(crate) fn __reduce167<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegment = "[", Expression, "]" => ActionFn(376);
+        // PathSegment = "[", Expression, "]" => ActionFn(383);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action376::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (3, 72)
+        (3, 73)
     }
-    pub(crate) fn __reduce166<
+    pub(crate) fn __reduce168<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegment => ActionFn(41);
+        // PathSegments = PathSegment => ActionFn(44);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action41::<>(__sym0);
+        let __nt = super::__action44::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 73)
+        (1, 74)
     }
-    pub(crate) fn __reduce167<
+    pub(crate) fn __reduce169<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments = PathSegments, PathSegment => ActionFn(42);
+        // PathSegments = PathSegments, PathSegment => ActionFn(45);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant49(__symbols);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action42::<>(__sym0, __sym1);
+        let __nt = super::__action45::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (2, 73)
+        (2, 74)
     }
-    pub(crate) fn __reduce168<
+    pub(crate) fn __reduce170<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? = PathSegments => ActionFn(155);
+        // PathSegments? = PathSegments => ActionFn(158);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action155::<>(__sym0);
+        let __nt = super::__action158::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (1, 74)
+        (1, 75)
     }
-    pub(crate) fn __reduce169<
+    pub(crate) fn __reduce171<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // PathSegments? =  => ActionFn(156);
+        // PathSegments? =  => ActionFn(159);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action156::<>(&__start, &__end);
+        let __nt = super::__action159::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant51(__nt), __end));
-        (0, 74)
+        (0, 75)
     }
-    pub(crate) fn __reduce170<
+    pub(crate) fn __reduce172<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&" => ActionFn(106);
+        // RefType = "&" => ActionFn(109);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action106::<>(__sym0);
+        let __nt = super::__action109::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 75)
+        (1, 76)
     }
-    pub(crate) fn __reduce171<
+    pub(crate) fn __reduce173<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType = "&", "mut" => ActionFn(107);
+        // RefType = "&", "mut" => ActionFn(110);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action107::<>(__sym0, __sym1);
+        let __nt = super::__action110::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (2, 75)
+        (2, 76)
     }
-    pub(crate) fn __reduce172<
+    pub(crate) fn __reduce174<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? = RefType => ActionFn(158);
+        // RefType? = RefType => ActionFn(161);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action158::<>(__sym0);
+        let __nt = super::__action161::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (1, 76)
+        (1, 77)
     }
-    pub(crate) fn __reduce173<
+    pub(crate) fn __reduce175<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // RefType? =  => ActionFn(159);
+        // RefType? =  => ActionFn(162);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action159::<>(&__start, &__end);
+        let __nt = super::__action162::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant53(__nt), __end));
-        (0, 76)
+        (0, 77)
     }
-    pub(crate) fn __reduce174<
+    pub(crate) fn __reduce176<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return", Expression => ActionFn(397);
+        // ReturnStmt = "return", Expression => ActionFn(404);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action397::<>(__sym0, __sym1);
+        let __nt = super::__action404::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (2, 77)
+        (2, 78)
     }
-    pub(crate) fn __reduce175<
+    pub(crate) fn __reduce177<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ReturnStmt = "return" => ActionFn(398);
+        // ReturnStmt = "return" => ActionFn(405);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action398::<>(__sym0);
+        let __nt = super::__action405::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 77)
+        (1, 78)
     }
-    pub(crate) fn __reduce176<
+    pub(crate) fn __reduce178<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = IfStmt => ActionFn(46);
+        // Statement = IfStmt => ActionFn(49);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action46::<>(__sym0);
+        let __nt = super::__action49::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce177<
+    pub(crate) fn __reduce179<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = WhileStmt => ActionFn(47);
+        // Statement = WhileStmt => ActionFn(50);
         let __sym0 = __pop_Variant62(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action47::<>(__sym0);
+        let __nt = super::__action50::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce178<
+    pub(crate) fn __reduce180<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ForStmt => ActionFn(48);
+        // Statement = ForStmt => ActionFn(51);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action48::<>(__sym0);
+        let __nt = super::__action51::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 78)
+        (1, 79)
     }
-    pub(crate) fn __reduce179<
+    pub(crate) fn __reduce181<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = LetStmt, ";" => ActionFn(49);
+        // Statement = LetStmt, ";" => ActionFn(52);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action49::<>(__sym0, __sym1);
+        let __nt = super::__action52::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce180<
+    pub(crate) fn __reduce182<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = AssignStmt, ";" => ActionFn(50);
+        // Statement = AssignStmt, ";" => ActionFn(53);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action50::<>(__sym0, __sym1);
+        let __nt = super::__action53::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce181<
+    pub(crate) fn __reduce183<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = FnCallExpr, ";" => ActionFn(51);
+        // Statement = FnCallExpr, ";" => ActionFn(54);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action51::<>(__sym0, __sym1);
+        let __nt = super::__action54::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce182<
+    pub(crate) fn __reduce184<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Statement = ReturnStmt, ";" => ActionFn(52);
+        // Statement = ReturnStmt, ";" => ActionFn(55);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action52::<>(__sym0, __sym1);
+        let __nt = super::__action55::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (2, 78)
+        (2, 79)
     }
-    pub(crate) fn __reduce183<
+    pub(crate) fn __reduce185<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(378);
+        // Struct = "struct", Ident, "<", Comma<Type>, ">", "{", Comma<StructField>, "}" => ActionFn(385);
         assert!(__symbols.len() >= 8);
         let __sym7 = __pop_Variant0(__symbols);
         let __sym6 = __pop_Variant30(__symbols);
@@ -581267,18 +605747,18 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym7.2;
-        let __nt = super::__action378::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
+        let __nt = super::__action385::<>(__sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (8, 79)
+        (8, 80)
     }
-    pub(crate) fn __reduce184<
+    pub(crate) fn __reduce186<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(379);
+        // Struct = "struct", Ident, "{", Comma<StructField>, "}" => ActionFn(386);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant30(__symbols);
@@ -581287,262 +605767,262 @@
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action379::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action386::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (5, 79)
+        (5, 80)
     }
-    pub(crate) fn __reduce185<
+    pub(crate) fn __reduce187<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField = Ident, ":", Type => ActionFn(380);
+        // StructField = Ident, ":", Type => ActionFn(387);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant6(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action380::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action387::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (3, 80)
+        (3, 81)
     }
-    pub(crate) fn __reduce186<
+    pub(crate) fn __reduce188<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? = StructField => ActionFn(182);
+        // StructField? = StructField => ActionFn(185);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action182::<>(__sym0);
+        let __nt = super::__action185::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (1, 81)
+        (1, 82)
     }
-    pub(crate) fn __reduce187<
+    pub(crate) fn __reduce189<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructField? =  => ActionFn(183);
+        // StructField? =  => ActionFn(186);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action183::<>(&__start, &__end);
+        let __nt = super::__action186::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant57(__nt), __end));
-        (0, 81)
+        (0, 82)
     }
-    pub(crate) fn __reduce188<
+    pub(crate) fn __reduce190<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitExpr = Ident, "{", Comma<StructInitField>, "}" => ActionFn(381);
+        // StructInitExpr = IdentWithOptionalType, "{", Comma<StructInitField>, "}" => ActionFn(388);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant31(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
-        let __sym0 = __pop_Variant18(__symbols);
+        let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action381::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action388::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (4, 82)
+        (4, 83)
     }
-    pub(crate) fn __reduce189<
+    pub(crate) fn __reduce191<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", Expression => ActionFn(382);
+        // StructInitField = Ident, ":", Expression => ActionFn(389);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant14(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action382::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action389::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce190<
+    pub(crate) fn __reduce192<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField = Ident, ":", StructInitExpr => ActionFn(383);
+        // StructInitField = Ident, ":", StructInitExpr => ActionFn(390);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant58(__symbols);
         let __sym1 = __pop_Variant0(__symbols);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action383::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action390::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (3, 83)
+        (3, 84)
     }
-    pub(crate) fn __reduce191<
+    pub(crate) fn __reduce193<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? = StructInitField => ActionFn(172);
+        // StructInitField? = StructInitField => ActionFn(175);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action172::<>(__sym0);
+        let __nt = super::__action175::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (1, 84)
+        (1, 85)
     }
-    pub(crate) fn __reduce192<
+    pub(crate) fn __reduce194<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // StructInitField? =  => ActionFn(173);
+        // StructInitField? =  => ActionFn(176);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action173::<>(&__start, &__end);
+        let __nt = super::__action176::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant59(__nt), __end));
-        (0, 84)
+        (0, 85)
     }
-    pub(crate) fn __reduce193<
+    pub(crate) fn __reduce195<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = "(", Expression, ")" => ActionFn(66);
+        // Term = "(", Expression, ")" => ActionFn(69);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action66::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action69::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 85)
+        (3, 86)
     }
-    pub(crate) fn __reduce194<
+    pub(crate) fn __reduce196<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term = Term0 => ActionFn(67);
+        // Term = Term0 => ActionFn(70);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action67::<>(__sym0);
+        let __nt = super::__action70::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 85)
+        (1, 86)
     }
-    pub(crate) fn __reduce195<
+    pub(crate) fn __reduce197<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = ValueExpr => ActionFn(63);
+        // Term0 = ValueExpr => ActionFn(66);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action63::<>(__sym0);
+        let __nt = super::__action66::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce196<
+    pub(crate) fn __reduce198<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = FnCallExpr => ActionFn(64);
+        // Term0 = FnCallExpr => ActionFn(67);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action64::<>(__sym0);
+        let __nt = super::__action67::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 86)
+        (1, 87)
     }
-    pub(crate) fn __reduce197<
+    pub(crate) fn __reduce199<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Term0 = "(", StructInitExpr, ")" => ActionFn(65);
+        // Term0 = "(", StructInitExpr, ")" => ActionFn(68);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant0(__symbols);
         let __sym1 = __pop_Variant58(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action65::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action68::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (3, 86)
+        (3, 87)
     }
-    pub(crate) fn __reduce198<
+    pub(crate) fn __reduce200<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident => ActionFn(415);
+        // Type = RefType, Ident => ActionFn(422);
         assert!(__symbols.len() >= 2);
         let __sym1 = __pop_Variant18(__symbols);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym1.2;
-        let __nt = super::__action415::<>(__sym0, __sym1);
+        let __nt = super::__action422::<>(__sym0, __sym1);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (2, 87)
+        (2, 88)
     }
-    pub(crate) fn __reduce199<
+    pub(crate) fn __reduce201<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident => ActionFn(416);
+        // Type = Ident => ActionFn(423);
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action416::<>(__sym0);
+        let __nt = super::__action423::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 87)
+        (1, 88)
     }
-    pub(crate) fn __reduce200<
+    pub(crate) fn __reduce202<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(417);
+        // Type = RefType, Ident, "<", Comma<Type>, ">" => ActionFn(424);
         assert!(__symbols.len() >= 5);
         let __sym4 = __pop_Variant0(__symbols);
         let __sym3 = __pop_Variant8(__symbols);
@@ -581551,18 +606031,18 @@
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym4.2;
-        let __nt = super::__action417::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
+        let __nt = super::__action424::<>(__sym0, __sym1, __sym2, __sym3, __sym4);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (5, 87)
+        (5, 88)
     }
-    pub(crate) fn __reduce201<
+    pub(crate) fn __reduce203<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(418);
+        // Type = Ident, "<", Comma<Type>, ">" => ActionFn(425);
         assert!(__symbols.len() >= 4);
         let __sym3 = __pop_Variant0(__symbols);
         let __sym2 = __pop_Variant8(__symbols);
@@ -581570,388 +606050,388 @@
         let __sym0 = __pop_Variant18(__symbols);
         let __start = __sym0.0;
         let __end = __sym3.2;
-        let __nt = super::__action418::<>(__sym0, __sym1, __sym2, __sym3);
+        let __nt = super::__action425::<>(__sym0, __sym1, __sym2, __sym3);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (4, 87)
+        (4, 88)
     }
-    pub(crate) fn __reduce202<
+    pub(crate) fn __reduce204<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? = Type => ActionFn(162);
+        // Type? = Type => ActionFn(165);
         let __sym0 = __pop_Variant6(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action162::<>(__sym0);
+        let __nt = super::__action165::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (1, 88)
+        (1, 89)
     }
-    pub(crate) fn __reduce203<
+    pub(crate) fn __reduce205<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // Type? =  => ActionFn(163);
+        // Type? =  => ActionFn(166);
         let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default();
         let __end = __start.clone();
-        let __nt = super::__action163::<>(&__start, &__end);
+        let __nt = super::__action166::<>(&__start, &__end);
         __symbols.push((__start, __Symbol::Variant7(__nt), __end));
-        (0, 88)
+        (0, 89)
     }
-    pub(crate) fn __reduce204<
+    pub(crate) fn __reduce206<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "-" => ActionFn(386);
+        // UnaryOp = "-" => ActionFn(393);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action386::<>(__sym0);
+        let __nt = super::__action393::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce205<
+    pub(crate) fn __reduce207<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "!" => ActionFn(387);
+        // UnaryOp = "!" => ActionFn(394);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action387::<>(__sym0);
+        let __nt = super::__action394::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce206<
+    pub(crate) fn __reduce208<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // UnaryOp = "~" => ActionFn(388);
+        // UnaryOp = "~" => ActionFn(395);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action388::<>(__sym0);
+        let __nt = super::__action395::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 89)
+        (1, 90)
     }
-    pub(crate) fn __reduce207<
+    pub(crate) fn __reduce209<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "integer" => ActionFn(389);
+        // ValueExpr = "integer" => ActionFn(396);
         let __sym0 = __pop_Variant3(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action389::<>(__sym0);
+        let __nt = super::__action396::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce208<
+    pub(crate) fn __reduce210<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "boolean" => ActionFn(390);
+        // ValueExpr = "boolean" => ActionFn(397);
         let __sym0 = __pop_Variant1(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action390::<>(__sym0);
+        let __nt = super::__action397::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce209<
+    pub(crate) fn __reduce211<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = "string" => ActionFn(391);
+        // ValueExpr = "string" => ActionFn(398);
         let __sym0 = __pop_Variant2(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action391::<>(__sym0);
+        let __nt = super::__action398::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce210<
+    pub(crate) fn __reduce212<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // ValueExpr = PathExpr => ActionFn(102);
+        // ValueExpr = PathExpr => ActionFn(105);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action102::<>(__sym0);
+        let __nt = super::__action105::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 90)
+        (1, 91)
     }
-    pub(crate) fn __reduce211<
+    pub(crate) fn __reduce213<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // WhileStmt = "while", Expression, Block => ActionFn(392);
+        // WhileStmt = "while", Expression, Block => ActionFn(399);
         assert!(__symbols.len() >= 3);
         let __sym2 = __pop_Variant10(__symbols);
         let __sym1 = __pop_Variant14(__symbols);
         let __sym0 = __pop_Variant0(__symbols);
         let __start = __sym0.0;
         let __end = __sym2.2;
-        let __nt = super::__action392::<>(__sym0, __sym1, __sym2);
+        let __nt = super::__action399::<>(__sym0, __sym1, __sym2);
         __symbols.push((__start, __Symbol::Variant62(__nt), __end));
-        (3, 91)
+        (3, 92)
     }
-    pub(crate) fn __reduce212<
+    pub(crate) fn __reduce214<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __AssignStmt = AssignStmt => ActionFn(9);
+        // __AssignStmt = AssignStmt => ActionFn(10);
         let __sym0 = __pop_Variant26(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action9::<>(__sym0);
+        let __nt = super::__action10::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant26(__nt), __end));
-        (1, 92)
+        (1, 93)
     }
-    pub(crate) fn __reduce213<
+    pub(crate) fn __reduce215<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(21);
+        // __BinaryFirstLvlOp = BinaryFirstLvlOp => ActionFn(22);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action21::<>(__sym0);
+        let __nt = super::__action22::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 93)
+        (1, 94)
     }
-    pub(crate) fn __reduce214<
+    pub(crate) fn __reduce216<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(22);
+        // __BinarySecondLvlOp = BinarySecondLvlOp => ActionFn(23);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action22::<>(__sym0);
+        let __nt = super::__action23::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 94)
+        (1, 95)
     }
-    pub(crate) fn __reduce215<
+    pub(crate) fn __reduce217<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(23);
+        // __BinaryThirdLvlOp = BinaryThirdLvlOp => ActionFn(24);
         let __sym0 = __pop_Variant27(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action23::<>(__sym0);
+        let __nt = super::__action24::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant27(__nt), __end));
-        (1, 95)
+        (1, 96)
     }
-    pub(crate) fn __reduce216<
+    pub(crate) fn __reduce218<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Block = Block => ActionFn(5);
+        // __Block = Block => ActionFn(6);
         let __sym0 = __pop_Variant10(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action5::<>(__sym0);
+        let __nt = super::__action6::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant10(__nt), __end));
-        (1, 96)
+        (1, 97)
     }
-    pub(crate) fn __reduce217<
+    pub(crate) fn __reduce219<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Constant = Constant => ActionFn(31);
+        // __Constant = Constant => ActionFn(32);
         let __sym0 = __pop_Variant32(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action31::<>(__sym0);
+        let __nt = super::__action32::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant32(__nt), __end));
-        (1, 97)
+        (1, 98)
     }
-    pub(crate) fn __reduce218<
+    pub(crate) fn __reduce220<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression = Expression => ActionFn(20);
+        // __Expression = Expression => ActionFn(21);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action20::<>(__sym0);
+        let __nt = super::__action21::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 98)
+        (1, 99)
     }
-    pub(crate) fn __reduce219<
+    pub(crate) fn __reduce221<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression0 = Expression0 => ActionFn(16);
+        // __Expression0 = Expression0 => ActionFn(17);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action16::<>(__sym0);
+        let __nt = super::__action17::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 99)
+        (1, 100)
     }
-    pub(crate) fn __reduce220<
+    pub(crate) fn __reduce222<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression1 = Expression1 => ActionFn(17);
+        // __Expression1 = Expression1 => ActionFn(18);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action17::<>(__sym0);
+        let __nt = super::__action18::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 100)
+        (1, 101)
     }
-    pub(crate) fn __reduce221<
+    pub(crate) fn __reduce223<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression2 = Expression2 => ActionFn(18);
+        // __Expression2 = Expression2 => ActionFn(19);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action18::<>(__sym0);
+        let __nt = super::__action19::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 101)
+        (1, 102)
     }
-    pub(crate) fn __reduce222<
+    pub(crate) fn __reduce224<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Expression3 = Expression3 => ActionFn(19);
+        // __Expression3 = Expression3 => ActionFn(20);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action19::<>(__sym0);
+        let __nt = super::__action20::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 102)
+        (1, 103)
     }
-    pub(crate) fn __reduce223<
+    pub(crate) fn __reduce225<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnCallExpr = FnCallExpr => ActionFn(7);
+        // __FnCallExpr = FnCallExpr => ActionFn(8);
         let __sym0 = __pop_Variant34(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action7::<>(__sym0);
+        let __nt = super::__action8::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant34(__nt), __end));
-        (1, 103)
+        (1, 104)
     }
-    pub(crate) fn __reduce224<
+    pub(crate) fn __reduce226<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __FnParam = FnParam => ActionFn(29);
+        // __FnParam = FnParam => ActionFn(30);
         let __sym0 = __pop_Variant16(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action29::<>(__sym0);
+        let __nt = super::__action30::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant16(__nt), __end));
-        (1, 104)
+        (1, 105)
     }
-    pub(crate) fn __reduce225<
+    pub(crate) fn __reduce227<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ForStmt = ForStmt => ActionFn(12);
+        // __ForStmt = ForStmt => ActionFn(13);
         let __sym0 = __pop_Variant36(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action12::<>(__sym0);
+        let __nt = super::__action13::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant36(__nt), __end));
-        (1, 105)
+        (1, 106)
     }
-    pub(crate) fn __reduce226<
+    pub(crate) fn __reduce228<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Function = Function => ActionFn(30);
+        // __Function = Function => ActionFn(31);
         let __sym0 = __pop_Variant37(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action30::<>(__sym0);
+        let __nt = super::__action31::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant37(__nt), __end));
-        (1, 106)
+        (1, 107)
     }
-    pub(crate) fn __reduce227<
+    pub(crate) fn __reduce229<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -581964,264 +606444,279 @@
         let __end = __sym0.2;
         let __nt = super::__action0::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant18(__nt), __end));
-        (1, 107)
+        (1, 108)
     }
-    pub(crate) fn __reduce228<
+    pub(crate) fn __reduce230<
+    >(
+        __lookahead_start: Option<&usize>,
+        __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
+        _: core::marker::PhantomData<()>,
+    ) -> (usize, usize)
+    {
+        // __IdentWithOptionalType = IdentWithOptionalType => ActionFn(2);
+        let __sym0 = __pop_Variant6(__symbols);
+        let __start = __sym0.0;
+        let __end = __sym0.2;
+        let __nt = super::__action2::<>(__sym0);
+        __symbols.push((__start, __Symbol::Variant6(__nt), __end));
+        (1, 109)
+    }
+    pub(crate) fn __reduce231<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __IfStmt = IfStmt => ActionFn(13);
+        // __IfStmt = IfStmt => ActionFn(14);
         let __sym0 = __pop_Variant39(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action13::<>(__sym0);
+        let __nt = super::__action14::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant39(__nt), __end));
-        (1, 108)
+        (1, 110)
     }
-    pub(crate) fn __reduce229<
+    pub(crate) fn __reduce232<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Import = Import => ActionFn(34);
+        // __Import = Import => ActionFn(35);
         let __sym0 = __pop_Variant40(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action34::<>(__sym0);
+        let __nt = super::__action35::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant40(__nt), __end));
-        (1, 109)
+        (1, 111)
     }
-    pub(crate) fn __reduce230<
+    pub(crate) fn __reduce233<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __LetStmt = LetStmt => ActionFn(8);
+        // __LetStmt = LetStmt => ActionFn(9);
         let __sym0 = __pop_Variant41(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action8::<>(__sym0);
+        let __nt = super::__action9::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant41(__nt), __end));
-        (1, 110)
+        (1, 112)
     }
-    pub(crate) fn __reduce231<
+    pub(crate) fn __reduce234<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Module = Module => ActionFn(35);
+        // __Module = Module => ActionFn(36);
         let __sym0 = __pop_Variant46(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action35::<>(__sym0);
+        let __nt = super::__action36::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant46(__nt), __end));
-        (1, 111)
+        (1, 113)
     }
-    pub(crate) fn __reduce232<
+    pub(crate) fn __reduce235<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ModuleStatement = ModuleStatement => ActionFn(36);
+        // __ModuleStatement = ModuleStatement => ActionFn(37);
         let __sym0 = __pop_Variant47(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action36::<>(__sym0);
+        let __nt = super::__action37::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant47(__nt), __end));
-        (1, 112)
+        (1, 114)
     }
-    pub(crate) fn __reduce233<
+    pub(crate) fn __reduce236<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathExpr = PathExpr => ActionFn(2);
+        // __PathExpr = PathExpr => ActionFn(3);
         let __sym0 = __pop_Variant48(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action2::<>(__sym0);
+        let __nt = super::__action3::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant48(__nt), __end));
-        (1, 113)
+        (1, 115)
     }
-    pub(crate) fn __reduce234<
+    pub(crate) fn __reduce237<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegment = PathSegment => ActionFn(4);
+        // __PathSegment = PathSegment => ActionFn(5);
         let __sym0 = __pop_Variant49(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action4::<>(__sym0);
+        let __nt = super::__action5::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant49(__nt), __end));
-        (1, 114)
+        (1, 116)
     }
-    pub(crate) fn __reduce235<
+    pub(crate) fn __reduce238<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __PathSegments = PathSegments => ActionFn(3);
+        // __PathSegments = PathSegments => ActionFn(4);
         let __sym0 = __pop_Variant50(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action3::<>(__sym0);
+        let __nt = super::__action4::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant50(__nt), __end));
-        (1, 115)
+        (1, 117)
     }
-    pub(crate) fn __reduce236<
+    pub(crate) fn __reduce239<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __RefType = RefType => ActionFn(28);
+        // __RefType = RefType => ActionFn(29);
         let __sym0 = __pop_Variant52(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action28::<>(__sym0);
+        let __nt = super::__action29::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant52(__nt), __end));
-        (1, 116)
+        (1, 118)
     }
-    pub(crate) fn __reduce237<
+    pub(crate) fn __reduce240<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ReturnStmt = ReturnStmt => ActionFn(10);
+        // __ReturnStmt = ReturnStmt => ActionFn(11);
         let __sym0 = __pop_Variant54(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action10::<>(__sym0);
+        let __nt = super::__action11::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant54(__nt), __end));
-        (1, 117)
+        (1, 119)
     }
-    pub(crate) fn __reduce238<
+    pub(crate) fn __reduce241<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Statement = Statement => ActionFn(6);
+        // __Statement = Statement => ActionFn(7);
         let __sym0 = __pop_Variant55(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action6::<>(__sym0);
+        let __nt = super::__action7::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant55(__nt), __end));
-        (1, 118)
+        (1, 120)
     }
-    pub(crate) fn __reduce239<
+    pub(crate) fn __reduce242<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Struct = Struct => ActionFn(33);
+        // __Struct = Struct => ActionFn(34);
         let __sym0 = __pop_Variant56(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action33::<>(__sym0);
+        let __nt = super::__action34::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant56(__nt), __end));
-        (1, 119)
+        (1, 121)
     }
-    pub(crate) fn __reduce240<
+    pub(crate) fn __reduce243<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructField = StructField => ActionFn(32);
+        // __StructField = StructField => ActionFn(33);
         let __sym0 = __pop_Variant20(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action32::<>(__sym0);
+        let __nt = super::__action33::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant20(__nt), __end));
-        (1, 120)
+        (1, 122)
     }
-    pub(crate) fn __reduce241<
+    pub(crate) fn __reduce244<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitExpr = StructInitExpr => ActionFn(27);
+        // __StructInitExpr = StructInitExpr => ActionFn(28);
         let __sym0 = __pop_Variant58(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action27::<>(__sym0);
+        let __nt = super::__action28::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant58(__nt), __end));
-        (1, 121)
+        (1, 123)
     }
-    pub(crate) fn __reduce242<
+    pub(crate) fn __reduce245<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __StructInitField = StructInitField => ActionFn(26);
+        // __StructInitField = StructInitField => ActionFn(27);
         let __sym0 = __pop_Variant22(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action26::<>(__sym0);
+        let __nt = super::__action27::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant22(__nt), __end));
-        (1, 122)
+        (1, 124)
     }
-    pub(crate) fn __reduce243<
+    pub(crate) fn __reduce246<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term = Term => ActionFn(15);
+        // __Term = Term => ActionFn(16);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action15::<>(__sym0);
+        let __nt = super::__action16::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 123)
+        (1, 125)
     }
-    pub(crate) fn __reduce244<
+    pub(crate) fn __reduce247<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __Term0 = Term0 => ActionFn(14);
+        // __Term0 = Term0 => ActionFn(15);
         let __sym0 = __pop_Variant14(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action14::<>(__sym0);
+        let __nt = super::__action15::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant14(__nt), __end));
-        (1, 124)
+        (1, 126)
     }
-    pub(crate) fn __reduce245<
+    pub(crate) fn __reduce248<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
@@ -582234,37 +606729,37 @@
         let __end = __sym0.2;
         let __nt = super::__action1::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant6(__nt), __end));
-        (1, 125)
+        (1, 127)
     }
-    pub(crate) fn __reduce246<
+    pub(crate) fn __reduce249<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __UnaryOp = UnaryOp => ActionFn(24);
+        // __UnaryOp = UnaryOp => ActionFn(25);
         let __sym0 = __pop_Variant60(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action24::<>(__sym0);
+        let __nt = super::__action25::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant60(__nt), __end));
-        (1, 126)
+        (1, 128)
     }
-    pub(crate) fn __reduce247<
+    pub(crate) fn __reduce250<
     >(
         __lookahead_start: Option<&usize>,
         __symbols: &mut alloc::vec::Vec<(usize,__Symbol<>,usize)>,
         _: core::marker::PhantomData<()>,
     ) -> (usize, usize)
     {
-        // __ValueExpr = ValueExpr => ActionFn(25);
+        // __ValueExpr = ValueExpr => ActionFn(26);
         let __sym0 = __pop_Variant61(__symbols);
         let __start = __sym0.0;
         let __end = __sym0.2;
-        let __nt = super::__action25::<>(__sym0);
+        let __nt = super::__action26::<>(__sym0);
         __symbols.push((__start, __Symbol::Variant61(__nt), __end));
-        (1, 127)
+        (1, 129)
     }
 }
 pub(crate) use self::__parse__WhileStmt::WhileStmtParser;
@@ -582289,6 +606784,15 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action2<
+>(
+    (_, __0, _): (usize, ast::Type, usize),
+) -> ast::Type
+{
+    __0
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action3<
 >(
     (_, __0, _): (usize, ast::PathExpr, usize),
 ) -> ast::PathExpr
@@ -582297,7 +606801,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action3<
+fn __action4<
 >(
     (_, __0, _): (usize, Vec<ast::PathSegment>, usize),
 ) -> Vec<ast::PathSegment>
@@ -582306,7 +606810,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action4<
+fn __action5<
 >(
     (_, __0, _): (usize, ast::PathSegment, usize),
 ) -> ast::PathSegment
@@ -582315,7 +606819,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action5<
+fn __action6<
 >(
     (_, __0, _): (usize, ast::Block, usize),
 ) -> ast::Block
@@ -582324,7 +606828,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action6<
+fn __action7<
 >(
     (_, __0, _): (usize, ast::Statement, usize),
 ) -> ast::Statement
@@ -582333,7 +606837,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action7<
+fn __action8<
 >(
     (_, __0, _): (usize, ast::FnCallExpr, usize),
 ) -> ast::FnCallExpr
@@ -582342,7 +606846,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action8<
+fn __action9<
 >(
     (_, __0, _): (usize, ast::LetStmt, usize),
 ) -> ast::LetStmt
@@ -582351,7 +606855,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action9<
+fn __action10<
 >(
     (_, __0, _): (usize, ast::AssignStmt, usize),
 ) -> ast::AssignStmt
@@ -582360,7 +606864,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action10<
+fn __action11<
 >(
     (_, __0, _): (usize, ast::ReturnStmt, usize),
 ) -> ast::ReturnStmt
@@ -582369,7 +606873,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action11<
+fn __action12<
 >(
     (_, __0, _): (usize, ast::WhileStmt, usize),
 ) -> ast::WhileStmt
@@ -582378,7 +606882,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action12<
+fn __action13<
 >(
     (_, __0, _): (usize, ast::ForStmt, usize),
 ) -> ast::ForStmt
@@ -582387,7 +606891,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action13<
+fn __action14<
 >(
     (_, __0, _): (usize, ast::IfStmt, usize),
 ) -> ast::IfStmt
@@ -582395,15 +606899,6 @@
     __0
 }
 
-#[allow(clippy::too_many_arguments)]
-fn __action14<
->(
-    (_, __0, _): (usize, ast::Expression, usize),
-) -> ast::Expression
-{
-    __0
-}
-
 #[allow(clippy::too_many_arguments)]
 fn __action15<
 >(
@@ -582461,8 +606956,8 @@
 #[allow(clippy::too_many_arguments)]
 fn __action21<
 >(
-    (_, __0, _): (usize, ast::BinaryOp, usize),
-) -> ast::BinaryOp
+    (_, __0, _): (usize, ast::Expression, usize),
+) -> ast::Expression
 {
     __0
 }
@@ -582487,6 +606982,15 @@
 
 #[allow(clippy::too_many_arguments)]
 fn __action24<
+>(
+    (_, __0, _): (usize, ast::BinaryOp, usize),
+) -> ast::BinaryOp
+{
+    __0
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action25<
 >(
     (_, __0, _): (usize, ast::UnaryOp, usize),
 ) -> ast::UnaryOp
@@ -582495,7 +606999,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action25<
+fn __action26<
 >(
     (_, __0, _): (usize, ast::ValueExpr, usize),
 ) -> ast::ValueExpr
@@ -582504,7 +607008,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action26<
+fn __action27<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> (ast::Ident, ast::StructInitField)
@@ -582513,7 +607017,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action27<
+fn __action28<
 >(
     (_, __0, _): (usize, ast::StructInitExpr, usize),
 ) -> ast::StructInitExpr
@@ -582522,7 +607026,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action28<
+fn __action29<
 >(
     (_, __0, _): (usize, ast::RefType, usize),
 ) -> ast::RefType
@@ -582531,7 +607035,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action29<
+fn __action30<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> ast::FnParam
@@ -582540,7 +607044,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action30<
+fn __action31<
 >(
     (_, __0, _): (usize, ast::Function, usize),
 ) -> ast::Function
@@ -582549,7 +607053,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action31<
+fn __action32<
 >(
     (_, __0, _): (usize, ast::Constant, usize),
 ) -> ast::Constant
@@ -582558,7 +607062,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action32<
+fn __action33<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> ast::StructField
@@ -582567,7 +607071,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action33<
+fn __action34<
 >(
     (_, __0, _): (usize, ast::Struct, usize),
 ) -> ast::Struct
@@ -582576,7 +607080,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action34<
+fn __action35<
 >(
     (_, __0, _): (usize, ast::Import, usize),
 ) -> ast::Import
@@ -582585,7 +607089,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action35<
+fn __action36<
 >(
     (_, __0, _): (usize, ast::Module, usize),
 ) -> ast::Module
@@ -582594,7 +607098,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action36<
+fn __action37<
 >(
     (_, __0, _): (usize, ast::ModuleStatement, usize),
 ) -> ast::ModuleStatement
@@ -582603,7 +607107,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action37<
+fn __action38<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, String, usize),
@@ -582617,7 +607121,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action38<
+fn __action39<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, is_ref, _): (usize, core::option::Option<ast::RefType>, usize),
@@ -582634,7 +607138,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action39<
+fn __action40<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, is_ref, _): (usize, core::option::Option<ast::RefType>, usize),
@@ -582654,7 +607158,43 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action40<
+fn __action41<
+>(
+    (_, lo, _): (usize, usize, usize),
+    (_, name, _): (usize, ast::Ident, usize),
+    (_, hi, _): (usize, usize, usize),
+) -> ast::Type
+{
+    ast::Type {
+        name,
+        generics: vec![],
+        is_ref: None,
+        span: ast::Span::new(lo, hi),
+    }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action42<
+>(
+    (_, lo, _): (usize, usize, usize),
+    (_, name, _): (usize, ast::Ident, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, generics, _): (usize, Vec<ast::Type>, usize),
+    (_, _, _): (usize, Token, usize),
+    (_, hi, _): (usize, usize, usize),
+) -> ast::Type
+{
+    ast::Type {
+        name,
+        generics,
+        is_ref: None,
+        span: ast::Span::new(lo, hi),
+    }
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action43<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, first, _): (usize, ast::Ident, usize),
@@ -582670,7 +607210,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action41<
+fn __action44<
 >(
     (_, __0, _): (usize, ast::PathSegment, usize),
 ) -> Vec<ast::PathSegment>
@@ -582679,7 +607219,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action42<
+fn __action45<
 >(
     (_, mut s, _): (usize, Vec<ast::PathSegment>, usize),
     (_, n, _): (usize, ast::PathSegment, usize),
@@ -582692,7 +607232,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action43<
+fn __action46<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Ident, usize),
@@ -582702,7 +607242,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action44<
+fn __action47<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582718,7 +607258,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action45<
+fn __action48<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582734,7 +607274,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action46<
+fn __action49<
 >(
     (_, __0, _): (usize, ast::IfStmt, usize),
 ) -> ast::Statement
@@ -582743,7 +607283,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action47<
+fn __action50<
 >(
     (_, __0, _): (usize, ast::WhileStmt, usize),
 ) -> ast::Statement
@@ -582752,7 +607292,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action48<
+fn __action51<
 >(
     (_, __0, _): (usize, ast::ForStmt, usize),
 ) -> ast::Statement
@@ -582761,7 +607301,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action49<
+fn __action52<
 >(
     (_, __0, _): (usize, ast::LetStmt, usize),
     (_, _, _): (usize, Token, usize),
@@ -582771,7 +607311,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action50<
+fn __action53<
 >(
     (_, __0, _): (usize, ast::AssignStmt, usize),
     (_, _, _): (usize, Token, usize),
@@ -582781,7 +607321,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action51<
+fn __action54<
 >(
     (_, __0, _): (usize, ast::FnCallExpr, usize),
     (_, _, _): (usize, Token, usize),
@@ -582791,7 +607331,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action52<
+fn __action55<
 >(
     (_, __0, _): (usize, ast::ReturnStmt, usize),
     (_, _, _): (usize, Token, usize),
@@ -582801,7 +607341,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action53<
+fn __action56<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -582819,7 +607359,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action54<
+fn __action57<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582842,7 +607382,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action55<
+fn __action58<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582865,7 +607405,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action56<
+fn __action59<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
@@ -582884,7 +607424,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action57<
+fn __action60<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, deref, _): (usize, alloc::vec::Vec<Token>, usize),
@@ -582903,7 +607443,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action58<
+fn __action61<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582918,7 +607458,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action59<
+fn __action62<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582937,7 +607477,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action60<
+fn __action63<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582958,7 +607498,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action61<
+fn __action64<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -582981,7 +607521,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action62<
+fn __action65<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583002,7 +607542,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action63<
+fn __action66<
 >(
     (_, __0, _): (usize, ast::ValueExpr, usize),
 ) -> ast::Expression
@@ -583011,7 +607551,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action64<
+fn __action67<
 >(
     (_, __0, _): (usize, ast::FnCallExpr, usize),
 ) -> ast::Expression
@@ -583020,7 +607560,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action65<
+fn __action68<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::StructInitExpr, usize),
@@ -583031,7 +607571,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action66<
+fn __action69<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Expression, usize),
@@ -583042,7 +607582,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action67<
+fn __action70<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -583051,7 +607591,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action68<
+fn __action71<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -583060,7 +607600,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action69<
+fn __action72<
 >(
     (_, _, _): (usize, Token, usize),
     (_, _, _): (usize, Token, usize),
@@ -583071,7 +607611,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action70<
+fn __action73<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Expression, usize),
@@ -583081,7 +607621,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action71<
+fn __action74<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Expression, usize),
@@ -583091,7 +607631,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action72<
+fn __action75<
 >(
     (_, op, _): (usize, ast::UnaryOp, usize),
     (_, rhs, _): (usize, ast::Expression, usize),
@@ -583104,7 +607644,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action73<
+fn __action76<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -583113,7 +607653,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action74<
+fn __action77<
 >(
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
@@ -583128,7 +607668,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action75<
+fn __action78<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -583137,7 +607677,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action76<
+fn __action79<
 >(
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
@@ -583152,7 +607692,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action77<
+fn __action80<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -583161,7 +607701,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action78<
+fn __action81<
 >(
     (_, lhs, _): (usize, ast::Expression, usize),
     (_, op, _): (usize, ast::BinaryOp, usize),
@@ -583176,7 +607716,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action79<
+fn __action82<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> ast::Expression
@@ -583185,7 +607725,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action80<
+fn __action83<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583196,7 +607736,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action81<
+fn __action84<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583207,7 +607747,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action82<
+fn __action85<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583218,7 +607758,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action83<
+fn __action86<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583229,7 +607769,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action84<
+fn __action87<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583240,7 +607780,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action85<
+fn __action88<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583251,7 +607791,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action86<
+fn __action89<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583262,7 +607802,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action87<
+fn __action90<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583273,7 +607813,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action88<
+fn __action91<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583284,7 +607824,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action89<
+fn __action92<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583295,7 +607835,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action90<
+fn __action93<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583306,7 +607846,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action91<
+fn __action94<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583317,7 +607857,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action92<
+fn __action95<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583328,7 +607868,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action93<
+fn __action96<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583339,7 +607879,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action94<
+fn __action97<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583350,7 +607890,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action95<
+fn __action98<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583361,7 +607901,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action96<
+fn __action99<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583372,7 +607912,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action97<
+fn __action100<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583383,7 +607923,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action98<
+fn __action101<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583394,7 +607934,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action99<
+fn __action102<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, u128, usize),
@@ -583408,7 +607948,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action100<
+fn __action103<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, bool, usize),
@@ -583422,7 +607962,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action101<
+fn __action104<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, value, _): (usize, String, usize),
@@ -583436,7 +607976,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action102<
+fn __action105<
 >(
     (_, __0, _): (usize, ast::PathExpr, usize),
 ) -> ast::ValueExpr
@@ -583445,7 +607985,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action103<
+fn __action106<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -583461,7 +608001,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action104<
+fn __action107<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -583477,10 +608017,10 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action105<
+fn __action108<
 >(
     (_, lo, _): (usize, usize, usize),
-    (_, name, _): (usize, ast::Ident, usize),
+    (_, name, _): (usize, ast::Type, usize),
     (_, _, _): (usize, Token, usize),
     (_, fields, _): (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, _, _): (usize, Token, usize),
@@ -583495,7 +608035,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action106<
+fn __action109<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> ast::RefType
@@ -583504,7 +608044,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action107<
+fn __action110<
 >(
     (_, __0, _): (usize, Token, usize),
     (_, __1, _): (usize, Token, usize),
@@ -583514,7 +608054,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action108<
+fn __action111<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -583531,7 +608071,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action109<
+fn __action112<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, is_public, _): (usize, core::option::Option<Token>, usize),
@@ -583558,7 +608098,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action110<
+fn __action113<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583580,7 +608120,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action111<
+fn __action114<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, name, _): (usize, ast::Ident, usize),
@@ -583597,7 +608137,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action112<
+fn __action115<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583618,7 +608158,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action113<
+fn __action116<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583636,7 +608176,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action114<
+fn __action117<
 >(
     (_, lo, _): (usize, usize, usize),
     (_, _, _): (usize, Token, usize),
@@ -583657,7 +608197,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action115<
+fn __action118<
 >(
     (_, __0, _): (usize, ast::Function, usize),
 ) -> ast::ModuleStatement
@@ -583666,7 +608206,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action116<
+fn __action119<
 >(
     (_, __0, _): (usize, ast::Constant, usize),
 ) -> ast::ModuleStatement
@@ -583675,7 +608215,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action117<
+fn __action120<
 >(
     (_, __0, _): (usize, ast::Struct, usize),
 ) -> ast::ModuleStatement
@@ -583684,7 +608224,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action118<
+fn __action121<
 >(
     (_, __0, _): (usize, ast::Module, usize),
 ) -> ast::ModuleStatement
@@ -583693,7 +608233,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action119<
+fn __action122<
 >(
     (_, __0, _): (usize, ast::ModuleStatement, usize),
 ) -> Vec<ast::ModuleStatement>
@@ -583702,7 +608242,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action120<
+fn __action123<
 >(
     (_, mut s, _): (usize, Vec<ast::ModuleStatement>, usize),
     (_, n, _): (usize, ast::ModuleStatement, usize),
@@ -583715,7 +608255,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action121<
+fn __action124<
 >(
     (_, __0, _): (usize, Vec<ast::Import>, usize),
 ) -> core::option::Option<Vec<ast::Import>>
@@ -583724,7 +608264,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action122<
+fn __action125<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583734,7 +608274,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action123<
+fn __action126<
 >(
     (_, __0, _): (usize, ast::Import, usize),
 ) -> Vec<ast::Import>
@@ -583743,7 +608283,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action124<
+fn __action127<
 >(
     (_, mut s, _): (usize, Vec<ast::Import>, usize),
     (_, n, _): (usize, ast::Import, usize),
@@ -583756,7 +608296,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action125<
+fn __action128<
 >(
     (_, __0, _): (usize, Vec<ast::Ident>, usize),
 ) -> core::option::Option<Vec<ast::Ident>>
@@ -583765,7 +608305,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action126<
+fn __action129<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583775,7 +608315,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action127<
+fn __action130<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, Vec<ast::Ident>, usize),
@@ -583786,7 +608326,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action128<
+fn __action131<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, core::option::Option<ast::Ident>, usize),
@@ -583802,7 +608342,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action129<
+fn __action132<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, core::option::Option<ast::Ident>, usize),
@@ -583818,7 +608358,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action130<
+fn __action133<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
     (_, e, _): (usize, core::option::Option<ast::StructField>, usize),
@@ -583834,7 +608374,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action131<
+fn __action134<
 >(
     (_, __0, _): (usize, Vec<ast::Type>, usize),
 ) -> core::option::Option<Vec<ast::Type>>
@@ -583843,7 +608383,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action132<
+fn __action135<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583853,7 +608393,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action133<
+fn __action136<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, Vec<ast::Type>, usize),
@@ -583864,7 +608404,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action134<
+fn __action137<
 >(
     (_, __0, _): (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
@@ -583873,7 +608413,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action135<
+fn __action138<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583883,7 +608423,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action136<
+fn __action139<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Type, usize),
@@ -583893,7 +608433,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action137<
+fn __action140<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
     (_, e, _): (usize, core::option::Option<ast::FnParam>, usize),
@@ -583909,7 +608449,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action138<
+fn __action141<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> core::option::Option<Token>
@@ -583918,7 +608458,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action139<
+fn __action142<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583928,7 +608468,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action140<
+fn __action143<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> core::option::Option<Token>
@@ -583937,7 +608477,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action141<
+fn __action144<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583947,7 +608487,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action142<
+fn __action145<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, e, _): (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
@@ -583963,7 +608503,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action143<
+fn __action146<
 >(
     (_, __0, _): (usize, ast::Block, usize),
 ) -> core::option::Option<ast::Block>
@@ -583972,7 +608512,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action144<
+fn __action147<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -583982,7 +608522,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action145<
+fn __action148<
 >(
     (_, _, _): (usize, Token, usize),
     (_, __0, _): (usize, ast::Block, usize),
@@ -583992,7 +608532,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action146<
+fn __action149<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> core::option::Option<ast::Expression>
@@ -584001,7 +608541,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action147<
+fn __action150<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584011,7 +608551,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action148<
+fn __action151<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584021,7 +608561,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action149<
+fn __action152<
 >(
     (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
 ) -> alloc::vec::Vec<Token>
@@ -584030,7 +608570,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action150<
+fn __action153<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> core::option::Option<Token>
@@ -584039,7 +608579,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action151<
+fn __action154<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584049,7 +608589,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action152<
+fn __action155<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
     (_, e, _): (usize, core::option::Option<ast::Expression>, usize),
@@ -584065,7 +608605,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action153<
+fn __action156<
 >(
     (_, __0, _): (usize, ast::Statement, usize),
 ) -> Vec<ast::Statement>
@@ -584074,7 +608614,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action154<
+fn __action157<
 >(
     (_, mut s, _): (usize, Vec<ast::Statement>, usize),
     (_, n, _): (usize, ast::Statement, usize),
@@ -584087,7 +608627,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action155<
+fn __action158<
 >(
     (_, __0, _): (usize, Vec<ast::PathSegment>, usize),
 ) -> core::option::Option<Vec<ast::PathSegment>>
@@ -584096,7 +608636,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action156<
+fn __action159<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584106,7 +608646,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action157<
+fn __action160<
 >(
     (_, mut v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
     (_, e, _): (usize, core::option::Option<ast::Type>, usize),
@@ -584122,7 +608662,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action158<
+fn __action161<
 >(
     (_, __0, _): (usize, ast::RefType, usize),
 ) -> core::option::Option<ast::RefType>
@@ -584131,7 +608671,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action159<
+fn __action162<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584140,7 +608680,7 @@
     None
 }
 
-fn __action160<
+fn __action163<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584149,7 +608689,7 @@
     *__lookbehind
 }
 
-fn __action161<
+fn __action164<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584159,7 +608699,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action162<
+fn __action165<
 >(
     (_, __0, _): (usize, ast::Type, usize),
 ) -> core::option::Option<ast::Type>
@@ -584168,7 +608708,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action163<
+fn __action166<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584178,7 +608718,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action164<
+fn __action167<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584188,7 +608728,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action165<
+fn __action168<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
 ) -> alloc::vec::Vec<ast::Type>
@@ -584197,7 +608737,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action166<
+fn __action169<
 >(
     (_, __0, _): (usize, ast::Type, usize),
     (_, _, _): (usize, Token, usize),
@@ -584207,7 +608747,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action167<
+fn __action170<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584217,7 +608757,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action168<
+fn __action171<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
 ) -> alloc::vec::Vec<ast::Expression>
@@ -584226,7 +608766,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action169<
+fn __action172<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
     (_, _, _): (usize, Token, usize),
@@ -584236,7 +608776,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action170<
+fn __action173<
 >(
     (_, __0, _): (usize, Token, usize),
 ) -> alloc::vec::Vec<Token>
@@ -584245,7 +608785,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action171<
+fn __action174<
 >(
     (_, v, _): (usize, alloc::vec::Vec<Token>, usize),
     (_, e, _): (usize, Token, usize),
@@ -584255,7 +608795,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action172<
+fn __action175<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> core::option::Option<(ast::Ident, ast::StructInitField)>
@@ -584264,7 +608804,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action173<
+fn __action176<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584274,7 +608814,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action174<
+fn __action177<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584284,7 +608824,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action175<
+fn __action178<
 >(
     (_, v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
@@ -584293,7 +608833,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action176<
+fn __action179<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
     (_, _, _): (usize, Token, usize),
@@ -584303,7 +608843,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action177<
+fn __action180<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> core::option::Option<ast::FnParam>
@@ -584312,7 +608852,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action178<
+fn __action181<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584322,7 +608862,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action179<
+fn __action182<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584332,7 +608872,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action180<
+fn __action183<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
@@ -584341,7 +608881,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action181<
+fn __action184<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
     (_, _, _): (usize, Token, usize),
@@ -584351,7 +608891,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action182<
+fn __action185<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> core::option::Option<ast::StructField>
@@ -584360,7 +608900,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action183<
+fn __action186<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584370,7 +608910,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action184<
+fn __action187<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584380,7 +608920,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action185<
+fn __action188<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
 ) -> alloc::vec::Vec<ast::StructField>
@@ -584389,7 +608929,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action186<
+fn __action189<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
     (_, _, _): (usize, Token, usize),
@@ -584399,7 +608939,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action187<
+fn __action190<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584409,7 +608949,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action188<
+fn __action191<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -584418,7 +608958,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action189<
+fn __action192<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -584428,7 +608968,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action190<
+fn __action193<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> core::option::Option<ast::Ident>
@@ -584437,7 +608977,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action191<
+fn __action194<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584447,7 +608987,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action192<
+fn __action195<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -584457,7 +608997,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action193<
+fn __action196<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -584466,7 +609006,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action194<
+fn __action197<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
     (_, _, _): (usize, Token, usize),
@@ -584476,7 +609016,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action195<
+fn __action198<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -584485,7 +609025,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action196<
+fn __action199<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, ast::Ident, usize),
@@ -584495,7 +609035,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action197<
+fn __action200<
 >(
     (_, __0, _): (usize, ast::Ident, usize),
 ) -> alloc::vec::Vec<ast::Ident>
@@ -584504,7 +609044,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action198<
+fn __action201<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Ident>, usize),
     (_, e, _): (usize, ast::Ident, usize),
@@ -584514,7 +609054,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action199<
+fn __action202<
 >(
     (_, __0, _): (usize, ast::StructField, usize),
 ) -> alloc::vec::Vec<ast::StructField>
@@ -584523,7 +609063,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action200<
+fn __action203<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::StructField>, usize),
     (_, e, _): (usize, ast::StructField, usize),
@@ -584533,7 +609073,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action201<
+fn __action204<
 >(
     (_, __0, _): (usize, ast::FnParam, usize),
 ) -> alloc::vec::Vec<ast::FnParam>
@@ -584542,7 +609082,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action202<
+fn __action205<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::FnParam>, usize),
     (_, e, _): (usize, ast::FnParam, usize),
@@ -584552,7 +609092,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action203<
+fn __action206<
 >(
     (_, __0, _): (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> alloc::vec::Vec<(ast::Ident, ast::StructInitField)>
@@ -584561,7 +609101,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action204<
+fn __action207<
 >(
     (_, v, _): (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     (_, e, _): (usize, (ast::Ident, ast::StructInitField), usize),
@@ -584571,7 +609111,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action205<
+fn __action208<
 >(
     (_, __0, _): (usize, ast::Expression, usize),
 ) -> alloc::vec::Vec<ast::Expression>
@@ -584580,7 +609120,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action206<
+fn __action209<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Expression>, usize),
     (_, e, _): (usize, ast::Expression, usize),
@@ -584590,7 +609130,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action207<
+fn __action210<
 >(
     (_, __0, _): (usize, ast::Type, usize),
 ) -> alloc::vec::Vec<ast::Type>
@@ -584599,7 +609139,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action208<
+fn __action211<
 >(
     (_, v, _): (usize, alloc::vec::Vec<ast::Type>, usize),
     (_, e, _): (usize, ast::Type, usize),
@@ -584609,7 +609149,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action209<
+fn __action212<
 >(
     __0: (usize, usize, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -584620,12 +609160,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action148(
+    let __temp0 = __action151(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action56(
+    __action59(
         __0,
         __temp0,
         __1,
@@ -584636,7 +609176,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action210<
+fn __action213<
 >(
     __0: (usize, usize, usize),
     __1: (usize, alloc::vec::Vec<Token>, usize),
@@ -584648,11 +609188,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action149(
+    let __temp0 = __action152(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action56(
+    __action59(
         __0,
         __temp0,
         __2,
@@ -584663,7 +609203,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action211<
+fn __action214<
 >(
     __0: (usize, usize, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -584674,12 +609214,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action148(
+    let __temp0 = __action151(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action57(
+    __action60(
         __0,
         __temp0,
         __1,
@@ -584690,7 +609230,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action212<
+fn __action215<
 >(
     __0: (usize, usize, usize),
     __1: (usize, alloc::vec::Vec<Token>, usize),
@@ -584702,11 +609242,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action149(
+    let __temp0 = __action152(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action57(
+    __action60(
         __0,
         __temp0,
         __2,
@@ -584717,7 +609257,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action213<
+fn __action216<
 >(
     __0: (usize, usize, usize),
     __1: (usize, core::option::Option<Token>, usize),
@@ -584734,11 +609274,11 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action138(
+    let __temp0 = __action141(
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action109(
+    __action112(
         __0,
         __1,
         __temp0,
@@ -584754,7 +609294,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action214<
+fn __action217<
 >(
     __0: (usize, usize, usize),
     __1: (usize, core::option::Option<Token>, usize),
@@ -584770,12 +609310,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action139(
+    let __temp0 = __action142(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action109(
+    __action112(
         __0,
         __1,
         __temp0,
@@ -584791,7 +609331,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action215<
+fn __action218<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -584806,11 +609346,11 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action150(
+    let __temp0 = __action153(
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action54(
+    __action57(
         __0,
         __1,
         __temp0,
@@ -584824,7 +609364,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action216<
+fn __action219<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -584838,12 +609378,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action151(
+    let __temp0 = __action154(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action54(
+    __action57(
         __0,
         __1,
         __temp0,
@@ -584857,7 +609397,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action217<
+fn __action220<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -584872,11 +609412,11 @@
 {
     let __start0 = __2.0;
     let __end0 = __2.2;
-    let __temp0 = __action150(
+    let __temp0 = __action153(
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action55(
+    __action58(
         __0,
         __1,
         __temp0,
@@ -584890,7 +609430,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action218<
+fn __action221<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -584904,12 +609444,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __2.0;
-    let __temp0 = __action151(
+    let __temp0 = __action154(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action55(
+    __action58(
         __0,
         __1,
         __temp0,
@@ -584923,7 +609463,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action219<
+fn __action222<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -584940,11 +609480,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action140(
+    let __temp0 = __action143(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action213(
+    __action216(
         __0,
         __temp0,
         __2,
@@ -584960,7 +609500,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action220<
+fn __action223<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -584976,12 +609516,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action141(
+    let __temp0 = __action144(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action213(
+    __action216(
         __0,
         __temp0,
         __1,
@@ -584997,7 +609537,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action221<
+fn __action224<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585013,11 +609553,11 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action140(
+    let __temp0 = __action143(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action214(
+    __action217(
         __0,
         __temp0,
         __2,
@@ -585032,7 +609572,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action222<
+fn __action225<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585047,12 +609587,12 @@
 {
     let __start0 = __0.2;
     let __end0 = __1.0;
-    let __temp0 = __action141(
+    let __temp0 = __action144(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action214(
+    __action217(
         __0,
         __temp0,
         __1,
@@ -585067,7 +609607,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action223<
+fn __action226<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Type, usize),
@@ -585075,18 +609615,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action136(
+    let __temp0 = __action139(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action134(
+    __action137(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action224<
+fn __action227<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585104,12 +609644,12 @@
 {
     let __start0 = __8.0;
     let __end0 = __9.2;
-    let __temp0 = __action223(
+    let __temp0 = __action226(
         __8,
         __9,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action219(
+    __action222(
         __0,
         __1,
         __2,
@@ -585125,7 +609665,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action225<
+fn __action228<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585141,12 +609681,12 @@
 {
     let __start0 = __7.2;
     let __end0 = __8.0;
-    let __temp0 = __action135(
+    let __temp0 = __action138(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action219(
+    __action222(
         __0,
         __1,
         __2,
@@ -585162,7 +609702,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action226<
+fn __action229<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585179,12 +609719,12 @@
 {
     let __start0 = __7.0;
     let __end0 = __8.2;
-    let __temp0 = __action223(
+    let __temp0 = __action226(
         __7,
         __8,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action220(
+    __action223(
         __0,
         __1,
         __2,
@@ -585199,7 +609739,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action227<
+fn __action230<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585214,12 +609754,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __7.0;
-    let __temp0 = __action135(
+    let __temp0 = __action138(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action220(
+    __action223(
         __0,
         __1,
         __2,
@@ -585234,7 +609774,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action228<
+fn __action231<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585251,12 +609791,12 @@
 {
     let __start0 = __7.0;
     let __end0 = __8.2;
-    let __temp0 = __action223(
+    let __temp0 = __action226(
         __7,
         __8,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action221(
+    __action224(
         __0,
         __1,
         __2,
@@ -585271,7 +609811,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action229<
+fn __action232<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585286,12 +609826,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __7.0;
-    let __temp0 = __action135(
+    let __temp0 = __action138(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action221(
+    __action224(
         __0,
         __1,
         __2,
@@ -585306,7 +609846,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action230<
+fn __action233<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585322,12 +609862,12 @@
 {
     let __start0 = __6.0;
     let __end0 = __7.2;
-    let __temp0 = __action223(
+    let __temp0 = __action226(
         __6,
         __7,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action222(
+    __action225(
         __0,
         __1,
         __2,
@@ -585341,7 +609881,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action231<
+fn __action234<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585355,12 +609895,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __6.0;
-    let __temp0 = __action135(
+    let __temp0 = __action138(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action222(
+    __action225(
         __0,
         __1,
         __2,
@@ -585374,7 +609914,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action232<
+fn __action235<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Type>, usize),
@@ -585383,19 +609923,19 @@
 {
     let __start0 = __0.0;
     let __end0 = __2.2;
-    let __temp0 = __action133(
+    let __temp0 = __action136(
         __0,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action131(
+    __action134(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action233<
+fn __action236<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585411,13 +609951,13 @@
 {
     let __start0 = __3.0;
     let __end0 = __5.2;
-    let __temp0 = __action232(
+    let __temp0 = __action235(
         __3,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action112(
+    __action115(
         __0,
         __1,
         __2,
@@ -585430,7 +609970,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action234<
+fn __action237<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585443,12 +609983,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action132(
+    let __temp0 = __action135(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action112(
+    __action115(
         __0,
         __1,
         __2,
@@ -585461,7 +610001,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action235<
+fn __action238<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Block, usize),
@@ -585469,18 +610009,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action145(
+    let __temp0 = __action148(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action143(
+    __action146(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action236<
+fn __action239<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585493,12 +610033,12 @@
 {
     let __start0 = __4.0;
     let __end0 = __5.2;
-    let __temp0 = __action235(
+    let __temp0 = __action238(
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action62(
+    __action65(
         __0,
         __1,
         __2,
@@ -585509,7 +610049,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action237<
+fn __action240<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585520,12 +610060,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __4.0;
-    let __temp0 = __action144(
+    let __temp0 = __action147(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action62(
+    __action65(
         __0,
         __1,
         __2,
@@ -585536,7 +610076,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action238<
+fn __action241<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
@@ -585545,19 +610085,19 @@
 {
     let __start0 = __0.0;
     let __end0 = __2.2;
-    let __temp0 = __action127(
+    let __temp0 = __action130(
         __0,
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action125(
+    __action128(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action239<
+fn __action242<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585571,13 +610111,13 @@
 {
     let __start0 = __3.0;
     let __end0 = __5.2;
-    let __temp0 = __action238(
+    let __temp0 = __action241(
         __3,
         __4,
         __5,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action113(
+    __action116(
         __0,
         __1,
         __2,
@@ -585588,7 +610128,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action240<
+fn __action243<
 >(
     __0: (usize, usize, usize),
     __1: (usize, Token, usize),
@@ -585599,12 +610139,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action126(
+    let __temp0 = __action129(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action113(
+    __action116(
         __0,
         __1,
         __2,
@@ -585615,7 +610155,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action241<
+fn __action244<
 >(
     __0: (usize, ast::Expression, usize),
     __1: (usize, Token, usize),
@@ -585623,18 +610163,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action169(
+    let __temp0 = __action172(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action205(
+    __action208(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action242<
+fn __action245<
 >(
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
     __1: (usize, ast::Expression, usize),
@@ -585643,38 +610183,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action169(
+    let __temp0 = __action172(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action206(
+    __action209(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action243<
+fn __action246<
 >(
     __0: (usize, core::option::Option<ast::Expression>, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action167(
+    let __temp0 = __action170(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action152(
+    __action155(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action244<
+fn __action247<
 >(
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
     __1: (usize, core::option::Option<ast::Expression>, usize),
@@ -585682,18 +610222,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action168(
+    let __temp0 = __action171(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action152(
+    __action155(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action245<
+fn __action248<
 >(
     __0: (usize, ast::FnParam, usize),
     __1: (usize, Token, usize),
@@ -585701,18 +610241,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action181(
+    let __temp0 = __action184(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action201(
+    __action204(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action246<
+fn __action249<
 >(
     __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
     __1: (usize, ast::FnParam, usize),
@@ -585721,38 +610261,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action181(
+    let __temp0 = __action184(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action202(
+    __action205(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action247<
+fn __action250<
 >(
     __0: (usize, core::option::Option<ast::FnParam>, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action179(
+    let __temp0 = __action182(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action137(
+    __action140(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action248<
+fn __action251<
 >(
     __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
     __1: (usize, core::option::Option<ast::FnParam>, usize),
@@ -585760,18 +610300,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action180(
+    let __temp0 = __action183(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action137(
+    __action140(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action249<
+fn __action252<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -585779,18 +610319,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action194(
+    let __temp0 = __action197(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action195(
+    __action198(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action250<
+fn __action253<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, ast::Ident, usize),
@@ -585799,38 +610339,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action194(
+    let __temp0 = __action197(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action196(
+    __action199(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action251<
+fn __action254<
 >(
     __0: (usize, core::option::Option<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action192(
+    let __temp0 = __action195(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action128(
+    __action131(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action252<
+fn __action255<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, core::option::Option<ast::Ident>, usize),
@@ -585838,18 +610378,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action193(
+    let __temp0 = __action196(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action128(
+    __action131(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action253<
+fn __action256<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -585857,18 +610397,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action189(
+    let __temp0 = __action192(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action197(
+    __action200(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action254<
+fn __action257<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, ast::Ident, usize),
@@ -585877,38 +610417,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action189(
+    let __temp0 = __action192(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action198(
+    __action201(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action255<
+fn __action258<
 >(
     __0: (usize, core::option::Option<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action187(
+    let __temp0 = __action190(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action129(
+    __action132(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action256<
+fn __action259<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, core::option::Option<ast::Ident>, usize),
@@ -585916,18 +610456,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action188(
+    let __temp0 = __action191(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action129(
+    __action132(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action257<
+fn __action260<
 >(
     __0: (usize, ast::StructField, usize),
     __1: (usize, Token, usize),
@@ -585935,18 +610475,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action186(
+    let __temp0 = __action189(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action199(
+    __action202(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action258<
+fn __action261<
 >(
     __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
     __1: (usize, ast::StructField, usize),
@@ -585955,38 +610495,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action186(
+    let __temp0 = __action189(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action200(
+    __action203(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action259<
+fn __action262<
 >(
     __0: (usize, core::option::Option<ast::StructField>, usize),
 ) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action184(
+    let __temp0 = __action187(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action130(
+    __action133(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action260<
+fn __action263<
 >(
     __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
     __1: (usize, core::option::Option<ast::StructField>, usize),
@@ -585994,18 +610534,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action185(
+    let __temp0 = __action188(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action130(
+    __action133(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action261<
+fn __action264<
 >(
     __0: (usize, (ast::Ident, ast::StructInitField), usize),
     __1: (usize, Token, usize),
@@ -586013,18 +610553,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action176(
+    let __temp0 = __action179(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action203(
+    __action206(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action262<
+fn __action265<
 >(
     __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     __1: (usize, (ast::Ident, ast::StructInitField), usize),
@@ -586033,38 +610573,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action176(
+    let __temp0 = __action179(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action204(
+    __action207(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action263<
+fn __action266<
 >(
     __0: (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
 ) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action174(
+    let __temp0 = __action177(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action142(
+    __action145(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action264<
+fn __action267<
 >(
     __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     __1: (usize, core::option::Option<(ast::Ident, ast::StructInitField)>, usize),
@@ -586072,18 +610612,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action175(
+    let __temp0 = __action178(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action142(
+    __action145(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action265<
+fn __action268<
 >(
     __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
@@ -586091,18 +610631,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __1.2;
-    let __temp0 = __action166(
+    let __temp0 = __action169(
         __0,
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action207(
+    __action210(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action266<
+fn __action269<
 >(
     __0: (usize, alloc::vec::Vec<ast::Type>, usize),
     __1: (usize, ast::Type, usize),
@@ -586111,38 +610651,38 @@
 {
     let __start0 = __1.0;
     let __end0 = __2.2;
-    let __temp0 = __action166(
+    let __temp0 = __action169(
         __1,
         __2,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action208(
+    __action211(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action267<
+fn __action270<
 >(
     __0: (usize, core::option::Option<ast::Type>, usize),
 ) -> Vec<ast::Type>
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action164(
+    let __temp0 = __action167(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action157(
+    __action160(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action268<
+fn __action271<
 >(
     __0: (usize, alloc::vec::Vec<ast::Type>, usize),
     __1: (usize, core::option::Option<ast::Type>, usize),
@@ -586150,18 +610690,18 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action165(
+    let __temp0 = __action168(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action157(
+    __action160(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action269<
+fn __action272<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -586171,12 +610711,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action209(
+    __action212(
         __temp0,
         __0,
         __1,
@@ -586186,7 +610726,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action270<
+fn __action273<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -586197,12 +610737,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action210(
+    __action213(
         __temp0,
         __0,
         __1,
@@ -586213,7 +610753,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action271<
+fn __action274<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -586223,12 +610763,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action211(
+    __action214(
         __temp0,
         __0,
         __1,
@@ -586238,7 +610778,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action272<
+fn __action275<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -586249,12 +610789,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action212(
+    __action215(
         __temp0,
         __0,
         __1,
@@ -586265,7 +610805,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action273<
+fn __action276<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586273,12 +610813,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action80(
+    __action83(
         __temp0,
         __0,
         __1,
@@ -586286,7 +610826,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action274<
+fn __action277<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586294,12 +610834,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action81(
+    __action84(
         __temp0,
         __0,
         __1,
@@ -586307,7 +610847,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action275<
+fn __action278<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586315,12 +610855,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action82(
+    __action85(
         __temp0,
         __0,
         __1,
@@ -586328,7 +610868,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action276<
+fn __action279<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586336,12 +610876,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action83(
+    __action86(
         __temp0,
         __0,
         __1,
@@ -586349,7 +610889,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action277<
+fn __action280<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586357,12 +610897,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action84(
+    __action87(
         __temp0,
         __0,
         __1,
@@ -586370,7 +610910,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action278<
+fn __action281<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586378,12 +610918,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action85(
+    __action88(
         __temp0,
         __0,
         __1,
@@ -586391,7 +610931,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action279<
+fn __action282<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586399,12 +610939,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action86(
+    __action89(
         __temp0,
         __0,
         __1,
@@ -586412,7 +610952,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action280<
+fn __action283<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586420,12 +610960,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action87(
+    __action90(
         __temp0,
         __0,
         __1,
@@ -586433,7 +610973,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action281<
+fn __action284<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586441,12 +610981,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action88(
+    __action91(
         __temp0,
         __0,
         __1,
@@ -586454,7 +610994,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action282<
+fn __action285<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586462,12 +611002,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action89(
+    __action92(
         __temp0,
         __0,
         __1,
@@ -586475,7 +611015,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action283<
+fn __action286<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586483,12 +611023,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action90(
+    __action93(
         __temp0,
         __0,
         __1,
@@ -586496,7 +611036,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action284<
+fn __action287<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586504,12 +611044,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action91(
+    __action94(
         __temp0,
         __0,
         __1,
@@ -586517,7 +611057,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action285<
+fn __action288<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586525,12 +611065,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action92(
+    __action95(
         __temp0,
         __0,
         __1,
@@ -586538,7 +611078,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action286<
+fn __action289<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586546,12 +611086,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action93(
+    __action96(
         __temp0,
         __0,
         __1,
@@ -586559,7 +611099,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action287<
+fn __action290<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586567,12 +611107,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action94(
+    __action97(
         __temp0,
         __0,
         __1,
@@ -586580,7 +611120,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action288<
+fn __action291<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -586588,12 +611128,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action95(
+    __action98(
         __temp0,
         __0,
         __1,
@@ -586601,7 +611141,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action289<
+fn __action292<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Statement>, usize),
@@ -586611,12 +611151,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action45(
+    __action48(
         __temp0,
         __0,
         __1,
@@ -586626,7 +611166,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action290<
+fn __action293<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -586640,12 +611180,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action110(
+    __action113(
         __temp0,
         __0,
         __1,
@@ -586659,7 +611199,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action291<
+fn __action294<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -586670,12 +611210,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action53(
+    __action56(
         __temp0,
         __0,
         __1,
@@ -586686,7 +611226,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action292<
+fn __action295<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -586696,12 +611236,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action108(
+    __action111(
         __temp0,
         __0,
         __1,
@@ -586711,7 +611251,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action293<
+fn __action296<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -586723,12 +611263,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action60(
+    __action63(
         __temp0,
         __0,
         __1,
@@ -586740,7 +611280,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action294<
+fn __action297<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -586754,12 +611294,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action61(
+    __action64(
         __temp0,
         __0,
         __1,
@@ -586773,7 +611313,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action295<
+fn __action298<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -586790,12 +611330,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action224(
+    __action227(
         __temp0,
         __0,
         __1,
@@ -586812,7 +611352,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action296<
+fn __action299<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -586827,12 +611367,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action225(
+    __action228(
         __temp0,
         __0,
         __1,
@@ -586847,7 +611387,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action297<
+fn __action300<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -586863,12 +611403,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action226(
+    __action229(
         __temp0,
         __0,
         __1,
@@ -586884,7 +611424,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action298<
+fn __action301<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -586898,12 +611438,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action227(
+    __action230(
         __temp0,
         __0,
         __1,
@@ -586917,7 +611457,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action299<
+fn __action302<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -586933,12 +611473,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action228(
+    __action231(
         __temp0,
         __0,
         __1,
@@ -586954,7 +611494,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action300<
+fn __action303<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -586968,12 +611508,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action229(
+    __action232(
         __temp0,
         __0,
         __1,
@@ -586987,7 +611527,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action301<
+fn __action304<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587002,12 +611542,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action230(
+    __action233(
         __temp0,
         __0,
         __1,
@@ -587022,7 +611562,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action302<
+fn __action305<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587035,12 +611575,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action231(
+    __action234(
         __temp0,
         __0,
         __1,
@@ -587053,7 +611593,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action303<
+fn __action306<
 >(
     __0: (usize, String, usize),
     __1: (usize, usize, usize),
@@ -587061,12 +611601,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action37(
+    __action38(
         __temp0,
         __0,
         __1,
@@ -587074,7 +611614,57 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action304<
+fn __action307<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, usize, usize),
+) -> ast::Type
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action164(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action41(
+        __temp0,
+        __0,
+        __1,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action308<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Type>, usize),
+    __4: (usize, Token, usize),
+    __5: (usize, usize, usize),
+) -> ast::Type
+{
+    let __start0 = __0.0;
+    let __end0 = __0.0;
+    let __temp0 = __action164(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action42(
+        __temp0,
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __5,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action309<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -587086,12 +611676,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action236(
+    __action239(
         __temp0,
         __0,
         __1,
@@ -587103,7 +611693,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action305<
+fn __action310<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -587113,12 +611703,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action237(
+    __action240(
         __temp0,
         __0,
         __1,
@@ -587128,7 +611718,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action306<
+fn __action311<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
@@ -587141,12 +611731,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action239(
+    __action242(
         __temp0,
         __0,
         __1,
@@ -587159,7 +611749,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action307<
+fn __action312<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
@@ -587169,12 +611759,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action240(
+    __action243(
         __temp0,
         __0,
         __1,
@@ -587184,7 +611774,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action308<
+fn __action313<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -587198,12 +611788,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action215(
+    __action218(
         __temp0,
         __0,
         __1,
@@ -587217,7 +611807,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action309<
+fn __action314<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587230,12 +611820,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action216(
+    __action219(
         __temp0,
         __0,
         __1,
@@ -587248,7 +611838,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action310<
+fn __action315<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -587262,12 +611852,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action217(
+    __action220(
         __temp0,
         __0,
         __1,
@@ -587281,7 +611871,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action311<
+fn __action316<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587294,12 +611884,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action218(
+    __action221(
         __temp0,
         __0,
         __1,
@@ -587312,7 +611902,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action312<
+fn __action317<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587325,12 +611915,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action114(
+    __action117(
         __temp0,
         __0,
         __1,
@@ -587343,7 +611933,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action313<
+fn __action318<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
@@ -587352,12 +611942,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action40(
+    __action43(
         __temp0,
         __0,
         __1,
@@ -587366,7 +611956,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action314<
+fn __action319<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -587376,12 +611966,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action44(
+    __action47(
         __temp0,
         __0,
         __1,
@@ -587391,7 +611981,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action315<
+fn __action320<
 >(
     __0: (usize, Token, usize),
     __1: (usize, core::option::Option<ast::Expression>, usize),
@@ -587400,12 +611990,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action58(
+    __action61(
         __temp0,
         __0,
         __1,
@@ -587414,7 +612004,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action316<
+fn __action321<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587429,12 +612019,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action233(
+    __action236(
         __temp0,
         __0,
         __1,
@@ -587449,7 +612039,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action317<
+fn __action322<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -587461,12 +612051,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action234(
+    __action237(
         __temp0,
         __0,
         __1,
@@ -587478,7 +612068,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action318<
+fn __action323<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -587488,12 +612078,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action111(
+    __action114(
         __temp0,
         __0,
         __1,
@@ -587503,9 +612093,9 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action319<
+fn __action324<
 >(
-    __0: (usize, ast::Ident, usize),
+    __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
     __3: (usize, Token, usize),
@@ -587514,12 +612104,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action105(
+    __action108(
         __temp0,
         __0,
         __1,
@@ -587530,7 +612120,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action320<
+fn __action325<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -587540,12 +612130,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action103(
+    __action106(
         __temp0,
         __0,
         __1,
@@ -587555,7 +612145,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action321<
+fn __action326<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -587565,12 +612155,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action104(
+    __action107(
         __temp0,
         __0,
         __1,
@@ -587580,7 +612170,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action322<
+fn __action327<
 >(
     __0: (usize, core::option::Option<ast::RefType>, usize),
     __1: (usize, ast::Ident, usize),
@@ -587589,12 +612179,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action38(
+    __action39(
         __temp0,
         __0,
         __1,
@@ -587603,7 +612193,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action323<
+fn __action328<
 >(
     __0: (usize, core::option::Option<ast::RefType>, usize),
     __1: (usize, ast::Ident, usize),
@@ -587615,12 +612205,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action39(
+    __action40(
         __temp0,
         __0,
         __1,
@@ -587632,7 +612222,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action324<
+fn __action329<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -587640,12 +612230,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action96(
+    __action99(
         __temp0,
         __0,
         __1,
@@ -587653,7 +612243,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action325<
+fn __action330<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -587661,12 +612251,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action97(
+    __action100(
         __temp0,
         __0,
         __1,
@@ -587674,7 +612264,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action326<
+fn __action331<
 >(
     __0: (usize, Token, usize),
     __1: (usize, usize, usize),
@@ -587682,12 +612272,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action98(
+    __action101(
         __temp0,
         __0,
         __1,
@@ -587695,7 +612285,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action327<
+fn __action332<
 >(
     __0: (usize, u128, usize),
     __1: (usize, usize, usize),
@@ -587703,12 +612293,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action99(
+    __action102(
         __temp0,
         __0,
         __1,
@@ -587716,7 +612306,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action328<
+fn __action333<
 >(
     __0: (usize, bool, usize),
     __1: (usize, usize, usize),
@@ -587724,12 +612314,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action100(
+    __action103(
         __temp0,
         __0,
         __1,
@@ -587737,7 +612327,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action329<
+fn __action334<
 >(
     __0: (usize, String, usize),
     __1: (usize, usize, usize),
@@ -587745,12 +612335,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action101(
+    __action104(
         __temp0,
         __0,
         __1,
@@ -587758,7 +612348,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action330<
+fn __action335<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -587768,12 +612358,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action161(
+    let __temp0 = __action164(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action59(
+    __action62(
         __temp0,
         __0,
         __1,
@@ -587783,7 +612373,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action331<
+fn __action336<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -587792,12 +612382,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action269(
+    __action272(
         __0,
         __1,
         __2,
@@ -587806,7 +612396,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action332<
+fn __action337<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -587816,12 +612406,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action270(
+    __action273(
         __0,
         __1,
         __2,
@@ -587831,7 +612421,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action333<
+fn __action338<
 >(
     __0: (usize, ast::PathExpr, usize),
     __1: (usize, Token, usize),
@@ -587840,12 +612430,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action271(
+    __action274(
         __0,
         __1,
         __2,
@@ -587854,7 +612444,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action334<
+fn __action339<
 >(
     __0: (usize, alloc::vec::Vec<Token>, usize),
     __1: (usize, ast::PathExpr, usize),
@@ -587864,12 +612454,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action272(
+    __action275(
         __0,
         __1,
         __2,
@@ -587879,311 +612469,311 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action335<
+fn __action340<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action273(
+    __action276(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action336<
+fn __action341<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action274(
+    __action277(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action337<
+fn __action342<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action275(
+    __action278(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action338<
+fn __action343<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action276(
+    __action279(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action339<
+fn __action344<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action277(
+    __action280(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action340<
+fn __action345<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action278(
+    __action281(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action341<
+fn __action346<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action279(
+    __action282(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action342<
+fn __action347<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action280(
+    __action283(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action343<
+fn __action348<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action281(
+    __action284(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action344<
+fn __action349<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action282(
+    __action285(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action345<
+fn __action350<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action283(
+    __action286(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action346<
+fn __action351<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action284(
+    __action287(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action347<
+fn __action352<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action285(
+    __action288(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action348<
+fn __action353<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action286(
+    __action289(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action349<
+fn __action354<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action287(
+    __action290(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action350<
+fn __action355<
 >(
     __0: (usize, Token, usize),
 ) -> ast::BinaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action288(
+    __action291(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action351<
+fn __action356<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Statement>, usize),
@@ -588192,12 +612782,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action289(
+    __action292(
         __0,
         __1,
         __2,
@@ -588206,7 +612796,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action352<
+fn __action357<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588219,12 +612809,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action290(
+    __action293(
         __0,
         __1,
         __2,
@@ -588237,7 +612827,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action353<
+fn __action358<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -588247,12 +612837,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action291(
+    __action294(
         __0,
         __1,
         __2,
@@ -588262,7 +612852,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action354<
+fn __action359<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -588271,12 +612861,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action292(
+    __action295(
         __0,
         __1,
         __2,
@@ -588285,7 +612875,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action355<
+fn __action360<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588296,12 +612886,12 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action293(
+    __action296(
         __0,
         __1,
         __2,
@@ -588312,7 +612902,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action356<
+fn __action361<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588325,12 +612915,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action294(
+    __action297(
         __0,
         __1,
         __2,
@@ -588343,7 +612933,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action357<
+fn __action362<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588359,12 +612949,12 @@
 {
     let __start0 = __9.2;
     let __end0 = __9.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action295(
+    __action298(
         __0,
         __1,
         __2,
@@ -588380,7 +612970,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action358<
+fn __action363<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588394,12 +612984,12 @@
 {
     let __start0 = __7.2;
     let __end0 = __7.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action296(
+    __action299(
         __0,
         __1,
         __2,
@@ -588413,7 +613003,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action359<
+fn __action364<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588428,12 +613018,12 @@
 {
     let __start0 = __8.2;
     let __end0 = __8.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action297(
+    __action300(
         __0,
         __1,
         __2,
@@ -588448,7 +613038,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action360<
+fn __action365<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588461,12 +613051,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action298(
+    __action301(
         __0,
         __1,
         __2,
@@ -588479,7 +613069,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action361<
+fn __action366<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588494,12 +613084,12 @@
 {
     let __start0 = __8.2;
     let __end0 = __8.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action299(
+    __action302(
         __0,
         __1,
         __2,
@@ -588514,7 +613104,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action362<
+fn __action367<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588527,12 +613117,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action300(
+    __action303(
         __0,
         __1,
         __2,
@@ -588545,7 +613135,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action363<
+fn __action368<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588559,12 +613149,12 @@
 {
     let __start0 = __7.2;
     let __end0 = __7.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action301(
+    __action304(
         __0,
         __1,
         __2,
@@ -588578,7 +613168,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action364<
+fn __action369<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588590,12 +613180,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action302(
+    __action305(
         __0,
         __1,
         __2,
@@ -588607,26 +613197,72 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action365<
+fn __action370<
 >(
     __0: (usize, String, usize),
 ) -> ast::Ident
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action303(
+    __action306(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action366<
+fn __action371<
+>(
+    __0: (usize, ast::Ident, usize),
+) -> ast::Type
+{
+    let __start0 = __0.2;
+    let __end0 = __0.2;
+    let __temp0 = __action163(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action307(
+        __0,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action372<
+>(
+    __0: (usize, ast::Ident, usize),
+    __1: (usize, Token, usize),
+    __2: (usize, Token, usize),
+    __3: (usize, Vec<ast::Type>, usize),
+    __4: (usize, Token, usize),
+) -> ast::Type
+{
+    let __start0 = __4.2;
+    let __end0 = __4.2;
+    let __temp0 = __action163(
+        &__start0,
+        &__end0,
+    );
+    let __temp0 = (__start0, __temp0, __end0);
+    __action308(
+        __0,
+        __1,
+        __2,
+        __3,
+        __4,
+        __temp0,
+    )
+}
+
+#[allow(clippy::too_many_arguments)]
+fn __action373<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -588637,12 +613273,12 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action304(
+    __action309(
         __0,
         __1,
         __2,
@@ -588653,7 +613289,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action367<
+fn __action374<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -588662,12 +613298,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action305(
+    __action310(
         __0,
         __1,
         __2,
@@ -588676,7 +613312,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action368<
+fn __action375<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
@@ -588688,12 +613324,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action306(
+    __action311(
         __0,
         __1,
         __2,
@@ -588705,7 +613341,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action369<
+fn __action376<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Vec<ast::Ident>, usize),
@@ -588714,12 +613350,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action307(
+    __action312(
         __0,
         __1,
         __2,
@@ -588728,7 +613364,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action370<
+fn __action377<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588741,12 +613377,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action308(
+    __action313(
         __0,
         __1,
         __2,
@@ -588759,7 +613395,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action371<
+fn __action378<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588771,12 +613407,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action309(
+    __action314(
         __0,
         __1,
         __2,
@@ -588788,7 +613424,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action372<
+fn __action379<
 >(
     __0: (usize, Token, usize),
     __1: (usize, Token, usize),
@@ -588801,12 +613437,12 @@
 {
     let __start0 = __6.2;
     let __end0 = __6.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action310(
+    __action315(
         __0,
         __1,
         __2,
@@ -588819,7 +613455,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action373<
+fn __action380<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588831,12 +613467,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action311(
+    __action316(
         __0,
         __1,
         __2,
@@ -588848,7 +613484,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action374<
+fn __action381<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588860,12 +613496,12 @@
 {
     let __start0 = __5.2;
     let __end0 = __5.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action312(
+    __action317(
         __0,
         __1,
         __2,
@@ -588877,7 +613513,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action375<
+fn __action382<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, core::option::Option<Vec<ast::PathSegment>>, usize),
@@ -588885,12 +613521,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __1.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action313(
+    __action318(
         __0,
         __1,
         __temp0,
@@ -588898,7 +613534,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action376<
+fn __action383<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -588907,12 +613543,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action314(
+    __action319(
         __0,
         __1,
         __2,
@@ -588921,7 +613557,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action377<
+fn __action384<
 >(
     __0: (usize, Token, usize),
     __1: (usize, core::option::Option<ast::Expression>, usize),
@@ -588929,12 +613565,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __1.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action315(
+    __action320(
         __0,
         __1,
         __temp0,
@@ -588942,7 +613578,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action378<
+fn __action385<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588956,12 +613592,12 @@
 {
     let __start0 = __7.2;
     let __end0 = __7.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action316(
+    __action321(
         __0,
         __1,
         __2,
@@ -588975,7 +613611,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action379<
+fn __action386<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -588986,12 +613622,12 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action317(
+    __action322(
         __0,
         __1,
         __2,
@@ -589002,7 +613638,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action380<
+fn __action387<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -589011,12 +613647,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action318(
+    __action323(
         __0,
         __1,
         __2,
@@ -589025,9 +613661,9 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action381<
+fn __action388<
 >(
-    __0: (usize, ast::Ident, usize),
+    __0: (usize, ast::Type, usize),
     __1: (usize, Token, usize),
     __2: (usize, Vec<(ast::Ident, ast::StructInitField)>, usize),
     __3: (usize, Token, usize),
@@ -589035,12 +613671,12 @@
 {
     let __start0 = __3.2;
     let __end0 = __3.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action319(
+    __action324(
         __0,
         __1,
         __2,
@@ -589050,7 +613686,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action382<
+fn __action389<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -589059,12 +613695,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action320(
+    __action325(
         __0,
         __1,
         __2,
@@ -589073,7 +613709,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action383<
+fn __action390<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -589082,12 +613718,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action321(
+    __action326(
         __0,
         __1,
         __2,
@@ -589096,7 +613732,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action384<
+fn __action391<
 >(
     __0: (usize, core::option::Option<ast::RefType>, usize),
     __1: (usize, ast::Ident, usize),
@@ -589104,12 +613740,12 @@
 {
     let __start0 = __1.2;
     let __end0 = __1.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action322(
+    __action327(
         __0,
         __1,
         __temp0,
@@ -589117,7 +613753,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action385<
+fn __action392<
 >(
     __0: (usize, core::option::Option<ast::RefType>, usize),
     __1: (usize, ast::Ident, usize),
@@ -589128,12 +613764,12 @@
 {
     let __start0 = __4.2;
     let __end0 = __4.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action323(
+    __action328(
         __0,
         __1,
         __2,
@@ -589144,121 +613780,121 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action386<
+fn __action393<
 >(
     __0: (usize, Token, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action324(
+    __action329(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action387<
+fn __action394<
 >(
     __0: (usize, Token, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action325(
+    __action330(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action388<
+fn __action395<
 >(
     __0: (usize, Token, usize),
 ) -> ast::UnaryOp
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action326(
+    __action331(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action389<
+fn __action396<
 >(
     __0: (usize, u128, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action327(
+    __action332(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action390<
+fn __action397<
 >(
     __0: (usize, bool, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action328(
+    __action333(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action391<
+fn __action398<
 >(
     __0: (usize, String, usize),
 ) -> ast::ValueExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action329(
+    __action334(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action392<
+fn __action399<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -589267,12 +613903,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __2.2;
-    let __temp0 = __action160(
+    let __temp0 = __action163(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action330(
+    __action335(
         __0,
         __1,
         __2,
@@ -589281,24 +613917,24 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action393<
+fn __action400<
 >(
     __0: (usize, ast::Expression, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action146(
+    let __temp0 = __action149(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action243(
+    __action246(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action394<
+fn __action401<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589306,18 +613942,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action147(
+    let __temp0 = __action150(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action243(
+    __action246(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action395<
+fn __action402<
 >(
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
     __1: (usize, ast::Expression, usize),
@@ -589325,37 +613961,37 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action146(
+    let __temp0 = __action149(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action244(
+    __action247(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action396<
+fn __action403<
 >(
     __0: (usize, alloc::vec::Vec<ast::Expression>, usize),
 ) -> Vec<ast::Expression>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action147(
+    let __temp0 = __action150(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action244(
+    __action247(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action397<
+fn __action404<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Expression, usize),
@@ -589363,54 +613999,54 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action146(
+    let __temp0 = __action149(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action377(
+    __action384(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action398<
+fn __action405<
 >(
     __0: (usize, Token, usize),
 ) -> ast::ReturnStmt
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action147(
+    let __temp0 = __action150(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action377(
+    __action384(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action399<
+fn __action406<
 >(
     __0: (usize, ast::FnParam, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action177(
+    let __temp0 = __action180(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action247(
+    __action250(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action400<
+fn __action407<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589418,18 +614054,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action178(
+    let __temp0 = __action181(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action247(
+    __action250(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action401<
+fn __action408<
 >(
     __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
     __1: (usize, ast::FnParam, usize),
@@ -589437,54 +614073,54 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action177(
+    let __temp0 = __action180(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action248(
+    __action251(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action402<
+fn __action409<
 >(
     __0: (usize, alloc::vec::Vec<ast::FnParam>, usize),
 ) -> Vec<ast::FnParam>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action178(
+    let __temp0 = __action181(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action248(
+    __action251(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action403<
+fn __action410<
 >(
     __0: (usize, ast::Ident, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action190(
+    let __temp0 = __action193(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action251(
+    __action254(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action404<
+fn __action411<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589492,18 +614128,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action191(
+    let __temp0 = __action194(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action251(
+    __action254(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action405<
+fn __action412<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, ast::Ident, usize),
@@ -589511,54 +614147,54 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action190(
+    let __temp0 = __action193(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action252(
+    __action255(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action406<
+fn __action413<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action191(
+    let __temp0 = __action194(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action252(
+    __action255(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action407<
+fn __action414<
 >(
     __0: (usize, ast::Ident, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action190(
+    let __temp0 = __action193(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action255(
+    __action258(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action408<
+fn __action415<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589566,18 +614202,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action191(
+    let __temp0 = __action194(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action255(
+    __action258(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action409<
+fn __action416<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
     __1: (usize, ast::Ident, usize),
@@ -589585,37 +614221,37 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action190(
+    let __temp0 = __action193(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action256(
+    __action259(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action410<
+fn __action417<
 >(
     __0: (usize, alloc::vec::Vec<ast::Ident>, usize),
 ) -> Vec<ast::Ident>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action191(
+    let __temp0 = __action194(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action256(
+    __action259(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action411<
+fn __action418<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -589627,11 +614263,11 @@
 {
     let __start0 = __3.0;
     let __end0 = __3.2;
-    let __temp0 = __action121(
+    let __temp0 = __action124(
         __3,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action374(
+    __action381(
         __0,
         __1,
         __2,
@@ -589642,7 +614278,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action412<
+fn __action419<
 >(
     __0: (usize, Token, usize),
     __1: (usize, ast::Ident, usize),
@@ -589653,12 +614289,12 @@
 {
     let __start0 = __2.2;
     let __end0 = __3.0;
-    let __temp0 = __action122(
+    let __temp0 = __action125(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action374(
+    __action381(
         __0,
         __1,
         __2,
@@ -589669,7 +614305,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action413<
+fn __action420<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Vec<ast::PathSegment>, usize),
@@ -589677,37 +614313,37 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action155(
+    let __temp0 = __action158(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action375(
+    __action382(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action414<
+fn __action421<
 >(
     __0: (usize, ast::Ident, usize),
 ) -> ast::PathExpr
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action156(
+    let __temp0 = __action159(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action375(
+    __action382(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action415<
+fn __action422<
 >(
     __0: (usize, ast::RefType, usize),
     __1: (usize, ast::Ident, usize),
@@ -589715,37 +614351,37 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action158(
+    let __temp0 = __action161(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action384(
+    __action391(
         __temp0,
         __1,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action416<
+fn __action423<
 >(
     __0: (usize, ast::Ident, usize),
 ) -> ast::Type
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action159(
+    let __temp0 = __action162(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action384(
+    __action391(
         __temp0,
         __0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action417<
+fn __action424<
 >(
     __0: (usize, ast::RefType, usize),
     __1: (usize, ast::Ident, usize),
@@ -589756,11 +614392,11 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action158(
+    let __temp0 = __action161(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action385(
+    __action392(
         __temp0,
         __1,
         __2,
@@ -589770,7 +614406,7 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action418<
+fn __action425<
 >(
     __0: (usize, ast::Ident, usize),
     __1: (usize, Token, usize),
@@ -589780,12 +614416,12 @@
 {
     let __start0 = __0.0;
     let __end0 = __0.0;
-    let __temp0 = __action159(
+    let __temp0 = __action162(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action385(
+    __action392(
         __temp0,
         __0,
         __1,
@@ -589795,24 +614431,24 @@
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action419<
+fn __action426<
 >(
     __0: (usize, ast::StructField, usize),
 ) -> Vec<ast::StructField>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action182(
+    let __temp0 = __action185(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action259(
+    __action262(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action420<
+fn __action427<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589820,18 +614456,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action183(
+    let __temp0 = __action186(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action259(
+    __action262(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action421<
+fn __action428<
 >(
     __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
     __1: (usize, ast::StructField, usize),
@@ -589839,54 +614475,54 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action182(
+    let __temp0 = __action185(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action260(
+    __action263(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action422<
+fn __action429<
 >(
     __0: (usize, alloc::vec::Vec<ast::StructField>, usize),
 ) -> Vec<ast::StructField>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action183(
+    let __temp0 = __action186(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action260(
+    __action263(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action423<
+fn __action430<
 >(
     __0: (usize, (ast::Ident, ast::StructInitField), usize),
 ) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action172(
+    let __temp0 = __action175(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action263(
+    __action266(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action424<
+fn __action431<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589894,18 +614530,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action173(
+    let __temp0 = __action176(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action263(
+    __action266(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action425<
+fn __action432<
 >(
     __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
     __1: (usize, (ast::Ident, ast::StructInitField), usize),
@@ -589913,54 +614549,54 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action172(
+    let __temp0 = __action175(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action264(
+    __action267(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action426<
+fn __action433<
 >(
     __0: (usize, alloc::vec::Vec<(ast::Ident, ast::StructInitField)>, usize),
 ) -> Vec<(ast::Ident, ast::StructInitField)>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action173(
+    let __temp0 = __action176(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action264(
+    __action267(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action427<
+fn __action434<
 >(
     __0: (usize, ast::Type, usize),
 ) -> Vec<ast::Type>
 {
     let __start0 = __0.0;
     let __end0 = __0.2;
-    let __temp0 = __action162(
+    let __temp0 = __action165(
         __0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action267(
+    __action270(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action428<
+fn __action435<
 >(
     __lookbehind: &usize,
     __lookahead: &usize,
@@ -589968,18 +614604,18 @@
 {
     let __start0 = *__lookbehind;
     let __end0 = *__lookahead;
-    let __temp0 = __action163(
+    let __temp0 = __action166(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action267(
+    __action270(
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action429<
+fn __action436<
 >(
     __0: (usize, alloc::vec::Vec<ast::Type>, usize),
     __1: (usize, ast::Type, usize),
@@ -589987,30 +614623,30 @@
 {
     let __start0 = __1.0;
     let __end0 = __1.2;
-    let __temp0 = __action162(
+    let __temp0 = __action165(
         __1,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action268(
+    __action271(
         __0,
         __temp0,
     )
 }
 
 #[allow(clippy::too_many_arguments)]
-fn __action430<
+fn __action437<
 >(
     __0: (usize, alloc::vec::Vec<ast::Type>, usize),
 ) -> Vec<ast::Type>
 {
     let __start0 = __0.2;
     let __end0 = __0.2;
-    let __temp0 = __action163(
+    let __temp0 = __action166(
         &__start0,
         &__end0,
     );
     let __temp0 = (__start0, __temp0, __end0);
-    __action268(
+    __action271(
         __0,
         __temp0,
     )
diff --git a/trait.impl/core/clone/trait.Clone.js b/trait.impl/core/clone/trait.Clone.js
index a26eb4ad72..b25d7cf86f 100644
--- a/trait.impl/core/clone/trait.Clone.js
+++ b/trait.impl/core/clone/trait.Clone.js
@@ -37,7 +37,7 @@
 "proc_macro2":[["impl Clone for TokenStream"],["impl Clone for IntoIter"],["impl Clone for TokenTree"],["impl Clone for Span"],["impl Clone for Punct"],["impl Clone for Delimiter"],["impl Clone for Group"],["impl Clone for Ident"],["impl Clone for DelimSpan"],["impl Clone for Literal"],["impl Clone for Spacing"]],
 "regex":[["impl Clone for RegexBuilder"],["impl<'r> Clone for CaptureNames<'r>"],["impl Clone for RegexSet"],["impl Clone for SetMatches"],["impl Clone for Error"],["impl Clone for Regex"],["impl<'a> Clone for SetMatchesIter<'a>"],["impl<'a> Clone for SetMatchesIter<'a>"],["impl Clone for RegexSetBuilder"],["impl Clone for RegexSet"],["impl<'s> Clone for NoExpand<'s>"],["impl<'h> Clone for Match<'h>"],["impl<'h> Clone for Match<'h>"],["impl Clone for Regex"],["impl<'s> Clone for NoExpand<'s>"],["impl Clone for SetMatches"],["impl<'c, 'h> Clone for SubCaptureMatches<'c, 'h>"],["impl Clone for RegexBuilder"],["impl<'r> Clone for CaptureNames<'r>"],["impl Clone for CaptureLocations"],["impl<'c, 'h> Clone for SubCaptureMatches<'c, 'h>"],["impl Clone for CaptureLocations"],["impl Clone for RegexSetBuilder"]],
 "regex_automata":[["impl Clone for SmallIndexError"],["impl Clone for Look"],["impl Clone for LookSetIter"],["impl<'h> Clone for Input<'h>"],["impl<'a> Clone for GroupInfoPatternNames<'a>"],["impl Clone for Builder"],["impl Clone for LookSet"],["impl Clone for SmallIndex"],["impl Clone for Config"],["impl Clone for Config"],["impl<'h> Clone for Searcher<'h>"],["impl Clone for Builder"],["impl Clone for StateID"],["impl Clone for GroupInfoError"],["impl Clone for Prefilter"],["impl Clone for Captures"],["impl Clone for Config"],["impl Clone for Compiler"],["impl Clone for PikeVM"],["impl Clone for Unit"],["impl<'a> Clone for CapturesPatternIter<'a>"],["impl Clone for UnicodeWordBoundaryError"],["impl Clone for GroupInfo"],["impl Clone for Cache"],["impl Clone for PatternSet"],["impl Clone for HalfMatch"],["impl Clone for Config"],["impl Clone for DebugByte"],["impl Clone for PatternIDError"],["impl Clone for Config"],["impl Clone for Transition"],["impl Clone for Regex"],["impl Clone for DenseTransitions"],["impl Clone for MatchErrorKind"],["impl Clone for NFA"],["impl Clone for MatchKind"],["impl Clone for Cache"],["impl Clone for PatternSetInsertError"],["impl Clone for LookMatcher"],["impl Clone for Span"],["impl Clone for BuildError"],["impl Clone for State"],["impl Clone for SparseTransitions"],["impl Clone for MatchError"],["impl Clone for NonMaxUsize"],["impl Clone for StateIDError"],["impl Clone for Anchored"],["impl Clone for WhichCaptures"],["impl Clone for Builder"],["impl Clone for Match"],["impl<'a> Clone for PatternSetIter<'a>"],["impl Clone for PatternID"],["impl Clone for ByteClasses"],["impl Clone for BuildError"]],
-"regex_syntax":[["impl Clone for ClassSetRange"],["impl Clone for Span"],["impl Clone for Class"],["impl Clone for CaptureName"],["impl Clone for Ast"],["impl Clone for ClassUnicodeOpKind"],["impl Clone for ErrorKind"],["impl Clone for Capture"],["impl Clone for Look"],["impl Clone for HexLiteralKind"],["impl Clone for Literal"],["impl Clone for ClassBytesRange"],["impl Clone for ExtractKind"],["impl Clone for ClassSetBinaryOp"],["impl Clone for SpecialLiteralKind"],["impl Clone for HirKind"],["impl Clone for WithComments"],["impl Clone for Hir"],["impl Clone for ParserBuilder"],["impl Clone for Translator"],["impl Clone for ClassSet"],["impl Clone for ClassSetBinaryOpKind"],["impl Clone for AssertionKind"],["impl Clone for Literal"],["impl Clone for Error"],["impl Clone for ClassSetItem"],["impl Clone for Group"],["impl Clone for ClassBytes"],["impl Clone for ClassAscii"],["impl Clone for Flags"],["impl Clone for Parser"],["impl Clone for Parser"],["impl Clone for Repetition"],["impl Clone for Assertion"],["impl Clone for TranslatorBuilder"],["impl Clone for GroupKind"],["impl Clone for ClassUnicodeKind"],["impl Clone for ClassAsciiKind"],["impl Clone for Properties"],["impl Clone for ClassPerl"],["impl Clone for Utf8Range"],["impl Clone for FlagsItem"],["impl Clone for RepetitionOp"],["impl Clone for Concat"],["impl Clone for Dot"],["impl Clone for Repetition"],["impl Clone for Extractor"],["impl Clone for Seq"],["impl Clone for ParserBuilder"],["impl Clone for LiteralKind"],["impl Clone for ClassUnicode"],["impl Clone for Utf8Sequence"],["impl Clone for Comment"],["impl Clone for ClassBracketed"],["impl Clone for RepetitionRange"],["impl Clone for ErrorKind"],["impl Clone for Literal"],["impl Clone for Flag"],["impl Clone for ClassUnicodeRange"],["impl Clone for Position"],["impl Clone for LookSetIter"],["impl Clone for FlagsItemKind"],["impl Clone for ClassUnicode"],["impl Clone for SetFlags"],["impl Clone for ClassSetUnion"],["impl Clone for Error"],["impl Clone for Alternation"],["impl Clone for LookSet"],["impl Clone for RepetitionKind"],["impl Clone for ClassPerlKind"],["impl Clone for Error"]],
+"regex_syntax":[["impl Clone for ClassBytes"],["impl Clone for Comment"],["impl Clone for Class"],["impl Clone for ErrorKind"],["impl Clone for ClassSetUnion"],["impl Clone for Properties"],["impl Clone for RepetitionKind"],["impl Clone for Flags"],["impl Clone for ExtractKind"],["impl Clone for Concat"],["impl Clone for ClassUnicodeRange"],["impl Clone for ErrorKind"],["impl Clone for ClassPerl"],["impl Clone for AssertionKind"],["impl Clone for Span"],["impl Clone for ClassAscii"],["impl Clone for ClassPerlKind"],["impl Clone for Error"],["impl Clone for Literal"],["impl Clone for ClassUnicode"],["impl Clone for ClassAsciiKind"],["impl Clone for Literal"],["impl Clone for ClassUnicodeOpKind"],["impl Clone for ClassSet"],["impl Clone for Extractor"],["impl Clone for ClassSetBinaryOp"],["impl Clone for Flag"],["impl Clone for FlagsItemKind"],["impl Clone for Position"],["impl Clone for Dot"],["impl Clone for ClassBracketed"],["impl Clone for Parser"],["impl Clone for HexLiteralKind"],["impl Clone for ClassSetItem"],["impl Clone for Assertion"],["impl Clone for Look"],["impl Clone for SpecialLiteralKind"],["impl Clone for ParserBuilder"],["impl Clone for ClassSetBinaryOpKind"],["impl Clone for Utf8Sequence"],["impl Clone for Utf8Range"],["impl Clone for SetFlags"],["impl Clone for Group"],["impl Clone for Ast"],["impl Clone for ClassUnicode"],["impl Clone for Seq"],["impl Clone for Error"],["impl Clone for LookSetIter"],["impl Clone for Translator"],["impl Clone for Literal"],["impl Clone for Repetition"],["impl Clone for LookSet"],["impl Clone for GroupKind"],["impl Clone for Capture"],["impl Clone for TranslatorBuilder"],["impl Clone for ParserBuilder"],["impl Clone for CaptureName"],["impl Clone for Parser"],["impl Clone for RepetitionRange"],["impl Clone for RepetitionOp"],["impl Clone for Alternation"],["impl Clone for Hir"],["impl Clone for ClassUnicodeKind"],["impl Clone for Error"],["impl Clone for ClassSetRange"],["impl Clone for ClassBytesRange"],["impl Clone for LiteralKind"],["impl Clone for HirKind"],["impl Clone for WithComments"],["impl Clone for Repetition"],["impl Clone for FlagsItem"]],
 "rustc_demangle":[["impl Clone for TryDemangleError"]],
 "sharded_slab":[["impl Clone for DefaultConfig"]],
 "smallvec":[["impl<A: Array> Clone for SmallVec<A>
where\n A::Item: Clone,
"],["impl<A: Array + Clone> Clone for IntoIter<A>
where\n A::Item: Clone,
"]], diff --git a/trait.impl/core/cmp/trait.Eq.js b/trait.impl/core/cmp/trait.Eq.js index a7d65a9fb6..ae12749cfd 100644 --- a/trait.impl/core/cmp/trait.Eq.js +++ b/trait.impl/core/cmp/trait.Eq.js @@ -26,7 +26,7 @@ "proc_macro2":[["impl Eq for Delimiter"],["impl Eq for Spacing"],["impl Eq for Ident"]], "regex":[["impl<'h> Eq for Match<'h>"],["impl<'h> Eq for Match<'h>"]], "regex_automata":[["impl Eq for Transition"],["impl Eq for SmallIndexError"],["impl Eq for Unit"],["impl Eq for NonMaxUsize"],["impl Eq for MatchKind"],["impl Eq for PatternIDError"],["impl Eq for Match"],["impl Eq for SmallIndex"],["impl Eq for Anchored"],["impl Eq for MatchErrorKind"],["impl Eq for PatternSet"],["impl Eq for StateIDError"],["impl Eq for MatchError"],["impl Eq for State"],["impl Eq for StateID"],["impl Eq for SparseTransitions"],["impl Eq for Look"],["impl Eq for DenseTransitions"],["impl Eq for PatternID"],["impl Eq for Span"],["impl Eq for HalfMatch"],["impl Eq for LookSet"]], -"regex_syntax":[["impl Eq for HirKind"],["impl Eq for Utf8Range"],["impl Eq for Dot"],["impl Eq for ClassBytes"],["impl Eq for Hir"],["impl Eq for ClassUnicode"],["impl Eq for CaptureName"],["impl Eq for Seq"],["impl Eq for HexLiteralKind"],["impl Eq for ClassUnicodeKind"],["impl Eq for ClassSetBinaryOpKind"],["impl Eq for ClassUnicode"],["impl Eq for ClassUnicodeRange"],["impl Eq for Repetition"],["impl Eq for FlagsItem"],["impl Eq for WithComments"],["impl Eq for Capture"],["impl Eq for Repetition"],["impl Eq for ClassSetBinaryOp"],["impl Eq for ClassAsciiKind"],["impl Eq for GroupKind"],["impl Eq for ErrorKind"],["impl Eq for ClassAscii"],["impl Eq for RepetitionRange"],["impl Eq for LiteralKind"],["impl Eq for ErrorKind"],["impl Eq for ClassSet"],["impl Eq for Utf8Sequence"],["impl Eq for ClassPerl"],["impl Eq for AssertionKind"],["impl Eq for ClassUnicodeOpKind"],["impl Eq for ClassBracketed"],["impl Eq for ClassSetRange"],["impl Eq for Alternation"],["impl Eq for Literal"],["impl Eq for Error"],["impl Eq for Error"],["impl Eq for Span"],["impl Eq for FlagsItemKind"],["impl Eq for Literal"],["impl Eq for ClassBytesRange"],["impl Eq for Assertion"],["impl Eq for Ast"],["impl Eq for Literal"],["impl Eq for Flags"],["impl Eq for Comment"],["impl Eq for LookSet"],["impl Eq for Group"],["impl Eq for Position"],["impl Eq for RepetitionKind"],["impl Eq for Class"],["impl Eq for SpecialLiteralKind"],["impl Eq for RepetitionOp"],["impl Eq for Properties"],["impl Eq for Error"],["impl Eq for ClassPerlKind"],["impl Eq for ClassSetItem"],["impl Eq for Flag"],["impl Eq for Look"],["impl Eq for Concat"],["impl Eq for ClassSetUnion"],["impl Eq for SetFlags"]], +"regex_syntax":[["impl Eq for ClassSetBinaryOpKind"],["impl Eq for Literal"],["impl Eq for Alternation"],["impl Eq for WithComments"],["impl Eq for Position"],["impl Eq for ErrorKind"],["impl Eq for AssertionKind"],["impl Eq for ClassBracketed"],["impl Eq for Group"],["impl Eq for SpecialLiteralKind"],["impl Eq for ClassUnicode"],["impl Eq for ClassUnicodeKind"],["impl Eq for HexLiteralKind"],["impl Eq for Span"],["impl Eq for ClassUnicodeOpKind"],["impl Eq for RepetitionRange"],["impl Eq for Flag"],["impl Eq for Literal"],["impl Eq for LiteralKind"],["impl Eq for FlagsItem"],["impl Eq for RepetitionOp"],["impl Eq for Capture"],["impl Eq for Flags"],["impl Eq for Hir"],["impl Eq for Repetition"],["impl Eq for Dot"],["impl Eq for CaptureName"],["impl Eq for Literal"],["impl Eq for RepetitionKind"],["impl Eq for Error"],["impl Eq for ClassSetItem"],["impl Eq for Comment"],["impl Eq for Assertion"],["impl Eq for FlagsItemKind"],["impl Eq for ClassSetBinaryOp"],["impl Eq for ClassSetRange"],["impl Eq for ClassSet"],["impl Eq for ClassPerl"],["impl Eq for Repetition"],["impl Eq for ClassBytesRange"],["impl Eq for ClassUnicodeRange"],["impl Eq for HirKind"],["impl Eq for SetFlags"],["impl Eq for ClassAscii"],["impl Eq for Error"],["impl Eq for Seq"],["impl Eq for ClassUnicode"],["impl Eq for Class"],["impl Eq for Error"],["impl Eq for Ast"],["impl Eq for Concat"],["impl Eq for LookSet"],["impl Eq for ClassAsciiKind"],["impl Eq for Utf8Range"],["impl Eq for ClassPerlKind"],["impl Eq for Properties"],["impl Eq for GroupKind"],["impl Eq for ErrorKind"],["impl Eq for Utf8Sequence"],["impl Eq for Look"],["impl Eq for ClassBytes"],["impl Eq for ClassSetUnion"]], "smallvec":[["impl<A: Array> Eq for SmallVec<A>
where\n A::Item: Eq,
"]], "syn":[["impl Eq for Abi"],["impl Eq for ExprUnsafe"],["impl Eq for Move"],["impl Eq for Lt"],["impl Eq for Use"],["impl Eq for Caret"],["impl Eq for DataStruct"],["impl Eq for Plus"],["impl Eq for Pat"],["impl Eq for Override"],["impl Eq for TypeMacro"],["impl<'a> Eq for TypeGenerics<'a>"],["impl Eq for ForeignItem"],["impl Eq for Local"],["impl Eq for FnArg"],["impl Eq for ItemEnum"],["impl Eq for PathSep"],["impl Eq for StaticMutability"],["impl Eq for MacroDelimiter"],["impl Eq for TypeNever"],["impl Eq for Type"],["impl Eq for LitInt"],["impl Eq for PatType"],["impl Eq for ExprContinue"],["impl Eq for TypeParamBound"],["impl Eq for Generics"],["impl Eq for ExprClosure"],["impl Eq for ForeignItemStatic"],["impl Eq for PatReference"],["impl Eq for ItemMod"],["impl<'a> Eq for Turbofish<'a>"],["impl Eq for Fn"],["impl Eq for DotDotDot"],["impl Eq for Enum"],["impl Eq for PredicateType"],["impl Eq for Crate"],["impl Eq for Arm"],["impl Eq for ExprConst"],["impl Eq for BoundLifetimes"],["impl Eq for TypeArray"],["impl Eq for ExprIndex"],["impl Eq for ItemType"],["impl Eq for UseTree"],["impl Eq for ExprMethodCall"],["impl Eq for ImplItemConst"],["impl Eq for Ref"],["impl Eq for LitStr"],["impl Eq for ItemImpl"],["impl Eq for ExprReference"],["impl Eq for LArrow"],["impl Eq for RangeLimits"],["impl Eq for Eq"],["impl Eq for Struct"],["impl Eq for DeriveInput"],["impl Eq for Field"],["impl Eq for AssocConst"],["impl Eq for ExprLit"],["impl Eq for TypeReference"],["impl Eq for Static"],["impl Eq for ItemForeignMod"],["impl Eq for Default"],["impl Eq for Semi"],["impl Eq for For"],["impl Eq for Ge"],["impl<T, P> Eq for Punctuated<T, P>
where\n T: Eq,\n P: Eq,
"],["impl Eq for ImplItemFn"],["impl Eq for Colon"],["impl Eq for ImplItem"],["impl Eq for Fields"],["impl Eq for Where"],["impl Eq for Loop"],["impl Eq for GenericArgument"],["impl Eq for ExprCall"],["impl Eq for Constraint"],["impl Eq for ExprBreak"],["impl Eq for ParenthesizedGenericArguments"],["impl Eq for ExprWhile"],["impl Eq for ExprGroup"],["impl Eq for Do"],["impl Eq for TypePath"],["impl Eq for ReturnType"],["impl Eq for AttrStyle"],["impl Eq for WherePredicate"],["impl Eq for SlashEq"],["impl Eq for AngleBracketedGenericArguments"],["impl Eq for Ne"],["impl Eq for ItemStruct"],["impl Eq for ForeignItemType"],["impl Eq for SelfValue"],["impl Eq for PatParen"],["impl Eq for LitByte"],["impl Eq for ExprAssign"],["impl Eq for FieldValue"],["impl Eq for Final"],["impl Eq for TraitItemFn"],["impl Eq for TypeGroup"],["impl Eq for Trait"],["impl Eq for Typeof"],["impl Eq for OrOr"],["impl Eq for UseRename"],["impl Eq for ExprAwait"],["impl Eq for Abstract"],["impl Eq for Block"],["impl Eq for ExprPath"],["impl Eq for ItemMacro"],["impl Eq for Type"],["impl Eq for TypeParam"],["impl Eq for Meta"],["impl Eq for LitFloat"],["impl Eq for Expr"],["impl Eq for Dyn"],["impl Eq for SelfType"],["impl Eq for VisRestricted"],["impl Eq for ItemUse"],["impl Eq for ItemExternCrate"],["impl Eq for UseGroup"],["impl Eq for RArrow"],["impl Eq for ExprReturn"],["impl Eq for LifetimeParam"],["impl Eq for If"],["impl Eq for TypeInfer"],["impl Eq for ConstParam"],["impl Eq for Signature"],["impl Eq for ExprArray"],["impl Eq for Unsized"],["impl Eq for PathSegment"],["impl Eq for TypeTuple"],["impl Eq for UnOp"],["impl Eq for ExprParen"],["impl Eq for FieldsNamed"],["impl Eq for Impl"],["impl Eq for Try"],["impl Eq for ExprMatch"],["impl Eq for Group"],["impl Eq for DataEnum"],["impl Eq for UseGlob"],["impl Eq for TraitBoundModifier"],["impl Eq for StmtMacro"],["impl Eq for TraitBound"],["impl Eq for Paren"],["impl Eq for Nothing"],["impl Eq for BinOp"],["impl Eq for PatOr"],["impl Eq for Brace"],["impl Eq for WhereClause"],["impl Eq for ItemConst"],["impl Eq for At"],["impl Eq for Not"],["impl Eq for AssocType"],["impl Eq for ExprForLoop"],["impl Eq for MetaList"],["impl Eq for Macro"],["impl Eq for ItemUnion"],["impl Eq for ImplItemMacro"],["impl Eq for Visibility"],["impl Eq for QSelf"],["impl Eq for Yield"],["impl Eq for ExprRange"],["impl Eq for ForeignItemFn"],["impl Eq for ItemTraitAlias"],["impl Eq for Underscore"],["impl Eq for Le"],["impl Eq for And"],["impl Eq for PlusEq"],["impl Eq for Return"],["impl Eq for ExprUnary"],["impl Eq for StarEq"],["impl Eq for File"],["impl Eq for Shr"],["impl<'a> Eq for Cursor<'a>"],["impl Eq for AndAnd"],["impl Eq for ExprRepeat"],["impl Eq for ExprLoop"],["impl Eq for FieldMutability"],["impl Eq for ImplItemType"],["impl Eq for Pub"],["impl Eq for DotDot"],["impl Eq for Label"],["impl Eq for Lit"],["impl Eq for Shl"],["impl Eq for Await"],["impl Eq for Priv"],["impl Eq for PatSlice"],["impl Eq for ExprCast"],["impl Eq for Percent"],["impl Eq for Slash"],["impl Eq for ExprStruct"],["impl Eq for TypeTraitObject"],["impl Eq for DotDotEq"],["impl Eq for Box"],["impl Eq for Mut"],["impl Eq for Comma"],["impl Eq for ExprYield"],["impl Eq for ShrEq"],["impl Eq for Receiver"],["impl Eq for Continue"],["impl Eq for Async"],["impl Eq for EqEq"],["impl Eq for Pound"],["impl Eq for TraitItemType"],["impl Eq for Stmt"],["impl Eq for PredicateLifetime"],["impl Eq for TraitItemConst"],["impl Eq for PercentEq"],["impl Eq for PatIdent"],["impl Eq for Union"],["impl Eq for ItemStatic"],["impl Eq for PathArguments"],["impl Eq for TypeBareFn"],["impl Eq for Unsafe"],["impl Eq for TypeSlice"],["impl Eq for ExprInfer"],["impl Eq for ItemFn"],["impl Eq for OrEq"],["impl Eq for ExprBlock"],["impl Eq for Path"],["impl Eq for Auto"],["impl Eq for BareVariadic"],["impl Eq for ExprTry"],["impl Eq for Variadic"],["impl Eq for Tilde"],["impl Eq for MinusEq"],["impl Eq for LitBool"],["impl Eq for Question"],["impl Eq for ForeignItemMacro"],["impl<'a> Eq for ImplGenerics<'a>"],["impl Eq for LocalInit"],["impl Eq for CaretEq"],["impl Eq for Bracket"],["impl Eq for UsePath"],["impl Eq for LitChar"],["impl Eq for DataUnion"],["impl Eq for Index"],["impl Eq for Item"],["impl Eq for Super"],["impl Eq for TraitItem"],["impl Eq for MetaNameValue"],["impl Eq for ExprTryBlock"],["impl Eq for ShlEq"],["impl Eq for Or"],["impl Eq for In"],["impl Eq for Const"],["impl Eq for Gt"],["impl Eq for FatArrow"],["impl Eq for FieldsUnnamed"],["impl Eq for ExprBinary"],["impl Eq for AndEq"],["impl Eq for ImplRestriction"],["impl Eq for ExprField"],["impl Eq for UseName"],["impl Eq for As"],["impl Eq for Else"],["impl Eq for TypeImplTrait"],["impl Eq for ExprTuple"],["impl Eq for Member"],["impl Eq for Become"],["impl Eq for Dollar"],["impl Eq for PatWild"],["impl Eq for PatTuple"],["impl Eq for TraitItemMacro"],["impl Eq for Extern"],["impl Eq for TypePtr"],["impl Eq for PatRest"],["impl Eq for Mod"],["impl Eq for FieldPat"],["impl Eq for Match"],["impl Eq for ItemTrait"],["impl Eq for Lifetime"],["impl Eq for Break"],["impl Eq for Star"],["impl Eq for Macro"],["impl Eq for BareFnArg"],["impl Eq for LitByteStr"],["impl Eq for ExprIf"],["impl Eq for PatTupleStruct"],["impl Eq for Let"],["impl Eq for GenericParam"],["impl Eq for Dot"],["impl Eq for Virtual"],["impl Eq for Data"],["impl Eq for ExprMacro"],["impl Eq for Attribute"],["impl Eq for Minus"],["impl Eq for While"],["impl Eq for TypeParen"],["impl Eq for ExprAsync"],["impl Eq for ExprLet"],["impl Eq for PatStruct"],["impl Eq for Variant"]], "tracing_core":[["impl<'a> Eq for Metadata<'a>"],["impl Eq for Id"],["impl Eq for FieldSet"],["impl Eq for Identifier"],["impl Eq for Level"],["impl Eq for Empty"],["impl Eq for Kind"],["impl Eq for LevelFilter"],["impl Eq for Field"]], diff --git a/trait.impl/core/cmp/trait.Ord.js b/trait.impl/core/cmp/trait.Ord.js index a51d495fcf..935567472e 100644 --- a/trait.impl/core/cmp/trait.Ord.js +++ b/trait.impl/core/cmp/trait.Ord.js @@ -14,7 +14,7 @@ "object":[["impl<E: Ord + Endian> Ord for U64Bytes<E>"],["impl<E: Ord + Endian> Ord for I64Bytes<E>"],["impl<E: Ord + Endian> Ord for U32Bytes<E>"],["impl<E: Ord + Endian> Ord for I32Bytes<E>"],["impl<E: Ord + Endian> Ord for I16Bytes<E>"],["impl<E: Ord + Endian> Ord for U16Bytes<E>"]], "proc_macro2":[["impl Ord for Ident"]], "regex_automata":[["impl Ord for SmallIndex"],["impl Ord for StateID"],["impl Ord for Unit"],["impl Ord for NonMaxUsize"],["impl Ord for PatternID"]], -"regex_syntax":[["impl Ord for Utf8Sequence"],["impl Ord for Span"],["impl Ord for ClassBytesRange"],["impl Ord for ClassUnicodeRange"],["impl Ord for Literal"],["impl Ord for Position"],["impl Ord for Utf8Range"]], +"regex_syntax":[["impl Ord for Utf8Range"],["impl Ord for ClassBytesRange"],["impl Ord for Span"],["impl Ord for Utf8Sequence"],["impl Ord for Literal"],["impl Ord for Position"],["impl Ord for ClassUnicodeRange"]], "smallvec":[["impl<A: Array> Ord for SmallVec<A>
where\n A::Item: Ord,
"]], "syn":[["impl Ord for Lifetime"]], "tracing_core":[["impl Ord for LevelFilter"],["impl Ord for Level"]], diff --git a/trait.impl/core/cmp/trait.PartialEq.js b/trait.impl/core/cmp/trait.PartialEq.js index fb24532521..a0985bf07a 100644 --- a/trait.impl/core/cmp/trait.PartialEq.js +++ b/trait.impl/core/cmp/trait.PartialEq.js @@ -29,7 +29,7 @@ "proc_macro2":[["impl PartialEq for Ident"],["impl<T> PartialEq<T> for Ident
where\n T: ?Sized + AsRef<str>,
"],["impl PartialEq for Delimiter"],["impl PartialEq for Spacing"]], "regex":[["impl PartialEq for Error"],["impl<'h> PartialEq for Match<'h>"],["impl<'h> PartialEq for Match<'h>"]], "regex_automata":[["impl PartialEq for SmallIndexError"],["impl PartialEq for PatternSet"],["impl PartialEq for Transition"],["impl PartialEq for Span"],["impl PartialEq for Unit"],["impl PartialEq for SparseTransitions"],["impl PartialEq for MatchError"],["impl PartialEq for MatchErrorKind"],["impl PartialEq<Range<usize>> for Span"],["impl PartialEq for PatternIDError"],["impl PartialEq for SmallIndex"],["impl PartialEq for MatchKind"],["impl PartialEq for Match"],["impl PartialEq for Look"],["impl PartialEq for Anchored"],["impl PartialEq for DenseTransitions"],["impl PartialEq for State"],["impl PartialEq for LookSet"],["impl PartialEq for PatternID"],["impl PartialEq for NonMaxUsize"],["impl PartialEq for StateID"],["impl PartialEq for StateIDError"],["impl PartialEq<Span> for Range<usize>"],["impl PartialEq for HalfMatch"]], -"regex_syntax":[["impl PartialEq for SetFlags"],["impl PartialEq for Position"],["impl PartialEq for SpecialLiteralKind"],["impl PartialEq for ErrorKind"],["impl PartialEq for LiteralKind"],["impl PartialEq for Span"],["impl PartialEq for Flag"],["impl PartialEq for Concat"],["impl PartialEq for ClassUnicode"],["impl PartialEq for Repetition"],["impl PartialEq for Group"],["impl PartialEq for ClassSetUnion"],["impl PartialEq for ClassPerlKind"],["impl PartialEq for Error"],["impl PartialEq for CaptureName"],["impl PartialEq for ClassPerl"],["impl PartialEq for ClassBytes"],["impl PartialEq for Seq"],["impl PartialEq for Dot"],["impl PartialEq for ClassAsciiKind"],["impl PartialEq for ClassUnicodeOpKind"],["impl PartialEq for ClassSetRange"],["impl PartialEq for ClassAscii"],["impl PartialEq for Ast"],["impl PartialEq for Literal"],["impl PartialEq for FlagsItemKind"],["impl PartialEq for ClassUnicode"],["impl PartialEq for Error"],["impl PartialEq for Literal"],["impl PartialEq for Repetition"],["impl PartialEq for RepetitionOp"],["impl PartialEq for Utf8Range"],["impl PartialEq for ClassSet"],["impl PartialEq for ErrorKind"],["impl PartialEq for RepetitionKind"],["impl PartialEq for ClassBracketed"],["impl PartialEq for Assertion"],["impl PartialEq for HirKind"],["impl PartialEq for ClassUnicodeKind"],["impl PartialEq for FlagsItem"],["impl PartialEq for Class"],["impl PartialEq for Literal"],["impl PartialEq for Alternation"],["impl PartialEq for ClassUnicodeRange"],["impl PartialEq for AssertionKind"],["impl PartialEq for LookSet"],["impl PartialEq for ClassSetBinaryOpKind"],["impl PartialEq for Utf8Sequence"],["impl PartialEq for ClassSetBinaryOp"],["impl PartialEq for Error"],["impl PartialEq for HexLiteralKind"],["impl PartialEq for GroupKind"],["impl PartialEq for Properties"],["impl PartialEq for ClassSetItem"],["impl PartialEq for Flags"],["impl PartialEq for Capture"],["impl PartialEq for Comment"],["impl PartialEq for Hir"],["impl PartialEq for WithComments"],["impl PartialEq for Look"],["impl PartialEq for RepetitionRange"],["impl PartialEq for ClassBytesRange"]], +"regex_syntax":[["impl PartialEq for Dot"],["impl PartialEq for Repetition"],["impl PartialEq for Span"],["impl PartialEq for Comment"],["impl PartialEq for ClassPerl"],["impl PartialEq for ClassBytes"],["impl PartialEq for RepetitionKind"],["impl PartialEq for ClassUnicodeOpKind"],["impl PartialEq for RepetitionOp"],["impl PartialEq for LiteralKind"],["impl PartialEq for Alternation"],["impl PartialEq for FlagsItemKind"],["impl PartialEq for Literal"],["impl PartialEq for CaptureName"],["impl PartialEq for FlagsItem"],["impl PartialEq for ClassUnicode"],["impl PartialEq for ClassAscii"],["impl PartialEq for Literal"],["impl PartialEq for ClassSetUnion"],["impl PartialEq for Position"],["impl PartialEq for ClassBracketed"],["impl PartialEq for WithComments"],["impl PartialEq for Capture"],["impl PartialEq for ClassAsciiKind"],["impl PartialEq for ClassSet"],["impl PartialEq for LookSet"],["impl PartialEq for ClassSetBinaryOp"],["impl PartialEq for ClassSetItem"],["impl PartialEq for Utf8Range"],["impl PartialEq for Error"],["impl PartialEq for Class"],["impl PartialEq for ClassUnicode"],["impl PartialEq for Properties"],["impl PartialEq for Error"],["impl PartialEq for Utf8Sequence"],["impl PartialEq for SpecialLiteralKind"],["impl PartialEq for ClassSetBinaryOpKind"],["impl PartialEq for ClassPerlKind"],["impl PartialEq for Literal"],["impl PartialEq for Flags"],["impl PartialEq for Error"],["impl PartialEq for Hir"],["impl PartialEq for Seq"],["impl PartialEq for ClassUnicodeRange"],["impl PartialEq for Ast"],["impl PartialEq for Assertion"],["impl PartialEq for ErrorKind"],["impl PartialEq for Group"],["impl PartialEq for HirKind"],["impl PartialEq for Repetition"],["impl PartialEq for HexLiteralKind"],["impl PartialEq for ErrorKind"],["impl PartialEq for AssertionKind"],["impl PartialEq for GroupKind"],["impl PartialEq for RepetitionRange"],["impl PartialEq for ClassSetRange"],["impl PartialEq for Look"],["impl PartialEq for ClassBytesRange"],["impl PartialEq for ClassUnicodeKind"],["impl PartialEq for Flag"],["impl PartialEq for Concat"],["impl PartialEq for SetFlags"]], "sharded_slab":[["impl<T, C> PartialEq<T> for OwnedEntry<T, C>
where\n T: PartialEq<T>,\n C: Config,
"],["impl<T, C> PartialEq<T> for OwnedRefMut<T, C>
where\n T: PartialEq<T> + Clear + Default,\n C: Config,
"],["impl<'a, T, C> PartialEq<T> for RefMut<'a, T, C>
where\n T: PartialEq<T> + Clear + Default,\n C: Config,
"],["impl<'a, T, C> PartialEq<T> for Ref<'a, T, C>
where\n T: PartialEq<T> + Clear + Default,\n C: Config,
"],["impl<'a, T, C> PartialEq<T> for Entry<'a, T, C>
where\n T: PartialEq<T>,\n C: Config,
"],["impl<T, C> PartialEq<T> for OwnedRef<T, C>
where\n T: PartialEq<T> + Clear + Default,\n C: Config,
"]], "smallvec":[["impl<A: Array, B: Array> PartialEq<SmallVec<B>> for SmallVec<A>
where\n A::Item: PartialEq<B::Item>,
"]], "strsim":[["impl PartialEq for StrSimError"]], diff --git a/trait.impl/core/cmp/trait.PartialOrd.js b/trait.impl/core/cmp/trait.PartialOrd.js index bf72367f01..e655802048 100644 --- a/trait.impl/core/cmp/trait.PartialOrd.js +++ b/trait.impl/core/cmp/trait.PartialOrd.js @@ -14,7 +14,7 @@ "object":[["impl<E: PartialOrd + Endian> PartialOrd for I32Bytes<E>"],["impl<E: PartialOrd + Endian> PartialOrd for I64Bytes<E>"],["impl<E: PartialOrd + Endian> PartialOrd for U64Bytes<E>"],["impl<E: PartialOrd + Endian> PartialOrd for U32Bytes<E>"],["impl<E: PartialOrd + Endian> PartialOrd for U16Bytes<E>"],["impl<E: PartialOrd + Endian> PartialOrd for I16Bytes<E>"]], "proc_macro2":[["impl PartialOrd for Ident"]], "regex_automata":[["impl PartialOrd for SmallIndex"],["impl PartialOrd for NonMaxUsize"],["impl PartialOrd for StateID"],["impl PartialOrd for PatternID"],["impl PartialOrd for Unit"]], -"regex_syntax":[["impl PartialOrd for Utf8Sequence"],["impl PartialOrd for ClassBytesRange"],["impl PartialOrd for Position"],["impl PartialOrd for Span"],["impl PartialOrd for Literal"],["impl PartialOrd for ClassUnicodeRange"],["impl PartialOrd for Utf8Range"]], +"regex_syntax":[["impl PartialOrd for Utf8Range"],["impl PartialOrd for Utf8Sequence"],["impl PartialOrd for ClassUnicodeRange"],["impl PartialOrd for Position"],["impl PartialOrd for ClassBytesRange"],["impl PartialOrd for Literal"],["impl PartialOrd for Span"]], "smallvec":[["impl<A: Array> PartialOrd for SmallVec<A>
where\n A::Item: PartialOrd,
"]], "syn":[["impl<'a> PartialOrd for Cursor<'a>"],["impl PartialOrd for Lifetime"]], "tracing_core":[["impl PartialOrd<LevelFilter> for Level"],["impl PartialOrd<Level> for LevelFilter"],["impl PartialOrd for Level"],["impl PartialOrd for LevelFilter"]], diff --git a/trait.impl/core/convert/trait.From.js b/trait.impl/core/convert/trait.From.js index 4d9f7c2a68..4e60ccb56e 100644 --- a/trait.impl/core/convert/trait.From.js +++ b/trait.impl/core/convert/trait.From.js @@ -21,7 +21,7 @@ "proc_macro2":[["impl From<TokenStream> for TokenStream"],["impl From<TokenStream> for TokenStream"],["impl From<TokenTree> for TokenStream"],["impl From<Punct> for TokenTree"],["impl From<Span> for Span"],["impl From<Group> for TokenTree"],["impl From<Ident> for TokenTree"],["impl From<Literal> for TokenTree"]], "regex":[["impl<'h> From<Match<'h>> for &'h str"],["impl<'h> From<Match<'h>> for Range<usize>"],["impl<'h> From<Match<'h>> for &'h [u8]"],["impl<'h> From<Match<'h>> for Range<usize>"]], "regex_automata":[["impl From<u8> for StateID"],["impl From<Span> for Range<usize>"],["impl From<Range<usize>> for Span"],["impl<'h, H: ?Sized + AsRef<[u8]>> From<&'h H> for Input<'h>"],["impl From<u8> for SmallIndex"],["impl From<u8> for PatternID"]], -"regex_syntax":[["impl From<char> for Literal"],["impl From<Error> for Error"],["impl From<u8> for Literal"],["impl From<Error> for Error"]], +"regex_syntax":[["impl From<char> for Literal"],["impl From<Error> for Error"],["impl From<u8> for Literal"],["impl From<Error> for Error"]], "smallvec":[["impl<A: Array> From<A> for SmallVec<A>"],["impl<'a, A: Array> From<&'a [<A as Array>::Item]> for SmallVec<A>
where\n A::Item: Clone,
"],["impl From<LayoutError> for CollectionAllocErr"],["impl<A: Array> From<Vec<<A as Array>::Item>> for SmallVec<A>"]], "syn":[["impl From<TypeTuple> for Type"],["impl From<ExprCall> for Expr"],["impl From<PatReference> for Pat"],["impl From<FieldsNamed> for Fields"],["impl From<usize> for Member"],["impl From<ExprReference> for Expr"],["impl From<ExprTryBlock> for Expr"],["impl From<LitFloat> for Lit"],["impl From<Lifetime> for TypeParamBound"],["impl From<ExprInfer> for Expr"],["impl From<LitByteStr> for Lit"],["impl From<ExprRange> for Expr"],["impl From<ExprRepeat> for Expr"],["impl From<Index> for Member"],["impl From<ForeignItemStatic> for ForeignItem"],["impl From<ExprLit> for Pat"],["impl From<ItemMod> for Item"],["impl From<ExprAwait> for Expr"],["impl From<ExprMacro> for Expr"],["impl From<ExprLet> for Expr"],["impl From<ExprField> for Expr"],["impl From<Ident> for Member"],["impl<T> From<T> for PathSegment
where\n T: Into<Ident>,
"],["impl From<ForeignItemMacro> for ForeignItem"],["impl From<ExprIf> for Expr"],["impl From<ExprStruct> for Expr"],["impl From<TypeNever> for Type"],["impl From<ItemForeignMod> for Item"],["impl From<ItemTraitAlias> for Item"],["impl From<TypeArray> for Type"],["impl From<TraitItemType> for TraitItem"],["impl From<TypeGroup> for Type"],["impl From<ItemType> for Item"],["impl From<ImplItemFn> for ImplItem"],["impl From<ExprUnsafe> for Expr"],["impl From<ItemStruct> for Item"],["impl From<TypePath> for Type"],["impl From<PatSlice> for Pat"],["impl From<ExprClosure> for Expr"],["impl From<PredicateType> for WherePredicate"],["impl From<ExprAssign> for Expr"],["impl From<PatTuple> for Pat"],["impl From<ForeignItemFn> for ForeignItem"],["impl From<PatType> for FnArg"],["impl From<ExprBreak> for Expr"],["impl From<ItemExternCrate> for Item"],["impl From<Literal> for LitInt"],["impl From<usize> for Index"],["impl From<TypeBareFn> for Type"],["impl From<Literal> for LitFloat"],["impl From<Path> for Meta"],["impl From<ExprGroup> for Expr"],["impl From<TypeReference> for Type"],["impl From<ExprConst> for Expr"],["impl From<UsePath> for UseTree"],["impl From<TypeParam> for GenericParam"],["impl From<Super> for Ident"],["impl From<ItemEnum> for DeriveInput"],["impl From<TypeTraitObject> for Type"],["impl From<SelfType> for Ident"],["impl From<UseGroup> for UseTree"],["impl From<LexError> for Error"],["impl From<LitBool> for Lit"],["impl From<ExprParen> for Expr"],["impl From<ItemUnion> for DeriveInput"],["impl From<PatRest> for Pat"],["impl From<TypeParen> for Type"],["impl From<UseName> for UseTree"],["impl From<Crate> for Ident"],["impl From<TypeImplTrait> for Type"],["impl From<ItemMacro> for Item"],["impl From<ItemFn> for Item"],["impl From<ExprTry> for Expr"],["impl From<TypeInfer> for Type"],["impl From<ExprConst> for Pat"],["impl From<TypeMacro> for Type"],["impl From<PatType> for Pat"],["impl From<TraitItemFn> for TraitItem"],["impl From<TraitItemMacro> for TraitItem"],["impl From<ItemConst> for Item"],["impl From<PatStruct> for Pat"],["impl From<ExprContinue> for Expr"],["impl From<LitChar> for Lit"],["impl From<UseRename> for UseTree"],["impl From<ExprBlock> for Expr"],["impl From<LitStr> for Lit"],["impl From<LifetimeParam> for GenericParam"],["impl From<ExprTuple> for Expr"],["impl From<ItemStruct> for DeriveInput"],["impl From<Receiver> for FnArg"],["impl From<PredicateLifetime> for WherePredicate"],["impl From<ImplItemMacro> for ImplItem"],["impl From<ImplItemType> for ImplItem"],["impl From<ExprRange> for Pat"],["impl From<ExprIndex> for Expr"],["impl From<Ident> for TypeParam"],["impl From<TraitBound> for TypeParamBound"],["impl From<ExprPath> for Pat"],["impl From<ExprCast> for Expr"],["impl From<ExprArray> for Expr"],["impl From<MetaNameValue> for Meta"],["impl From<PatIdent> for Pat"],["impl From<ItemEnum> for Item"],["impl From<ItemImpl> for Item"],["impl From<ExprWhile> for Expr"],["impl From<ForeignItemType> for ForeignItem"],["impl From<SelfValue> for Ident"],["impl From<PatParen> for Pat"],["impl From<TraitItemConst> for TraitItem"],["impl From<ExprYield> for Expr"],["impl From<UseGlob> for UseTree"],["impl From<ExprReturn> for Expr"],["impl From<ItemUnion> for Item"],["impl From<Underscore> for Ident"],["impl From<LitByte> for Lit"],["impl From<ExprLoop> for Expr"],["impl From<PatOr> for Pat"],["impl From<DeriveInput> for Item"],["impl From<TypeSlice> for Type"],["impl<T> From<T> for Path
where\n T: Into<PathSegment>,
"],["impl From<ExprLit> for Expr"],["impl From<TypePtr> for Type"],["impl From<FieldsUnnamed> for Fields"],["impl From<ExprForLoop> for Expr"],["impl From<ExprMacro> for Pat"],["impl From<PatTupleStruct> for Pat"],["impl From<ConstParam> for GenericParam"],["impl From<PatWild> for Pat"],["impl From<ItemTrait> for Item"],["impl From<ExprPath> for Expr"],["impl From<ItemStatic> for Item"],["impl From<ExprBinary> for Expr"],["impl From<LitInt> for Lit"],["impl From<ImplItemConst> for ImplItem"],["impl From<ExprMatch> for Expr"],["impl From<ExprMethodCall> for Expr"],["impl From<ExprUnary> for Expr"],["impl From<MetaList> for Meta"],["impl From<ItemUse> for Item"],["impl From<ExprAsync> for Expr"],["impl From<Extern> for Ident"]], "tracing":[["impl<'a> From<&'a Span> for Option<Id>"],["impl<'a> From<&'a Span> for Option<&'a Id>"],["impl<'a> From<&'a EnteredSpan> for Option<Id>"],["impl<'a> From<&'a EnteredSpan> for Option<&'a Id>"],["impl From<Span> for Option<Id>"]], diff --git a/trait.impl/core/default/trait.Default.js b/trait.impl/core/default/trait.Default.js index c5bec25936..65dd066527 100644 --- a/trait.impl/core/default/trait.Default.js +++ b/trait.impl/core/default/trait.Default.js @@ -29,7 +29,7 @@ "proc_macro2":[["impl Default for TokenStream"]], "regex":[["impl Default for RegexSet"],["impl Default for RegexSet"]], "regex_automata":[["impl Default for PatternID"],["impl Default for ByteClasses"],["impl Default for Builder"],["impl Default for LookMatcher"],["impl Default for SmallIndex"],["impl Default for Config"],["impl Default for WhichCaptures"],["impl Default for MatchKind"],["impl Default for StateID"],["impl Default for GroupInfo"],["impl Default for LookSet"],["impl Default for Config"],["impl Default for Config"],["impl Default for Config"]], -"regex_syntax":[["impl Default for ClassUnicodeRange"],["impl Default for TranslatorBuilder"],["impl Default for ExtractKind"],["impl Default for ClassBytesRange"],["impl Default for LookSet"],["impl Default for Extractor"],["impl Default for ParserBuilder"],["impl Default for ParserBuilder"]], +"regex_syntax":[["impl Default for Extractor"],["impl Default for ClassUnicodeRange"],["impl Default for ClassBytesRange"],["impl Default for ParserBuilder"],["impl Default for ParserBuilder"],["impl Default for TranslatorBuilder"],["impl Default for ExtractKind"],["impl Default for LookSet"]], "sharded_slab":[["impl<T> Default for Pool<T>
where\n T: Clear + Default,
"],["impl<T> Default for Slab<T>"]], "smallvec":[["impl<A: Array> Default for SmallVec<A>"]], "syn":[["impl Default for DotDotDot"],["impl Default for DotDot"],["impl Default for As"],["impl Default for Try"],["impl Default for Do"],["impl Default for Type"],["impl Default for Async"],["impl Default for Plus"],["impl Default for AndAnd"],["impl Default for PathSep"],["impl Default for Typeof"],["impl Default for RArrow"],["impl Default for FatArrow"],["impl Default for ShrEq"],["impl Default for Caret"],["impl Default for Union"],["impl Default for OrOr"],["impl Default for SlashEq"],["impl Default for Enum"],["impl Default for Match"],["impl Default for Break"],["impl Default for Le"],["impl Default for Lt"],["impl Default for Box"],["impl Default for Fn"],["impl Default for Dot"],["impl Default for PercentEq"],["impl Default for And"],["impl Default for In"],["impl Default for At"],["impl Default for Underscore"],["impl Default for Else"],["impl Default for LArrow"],["impl Default for Super"],["impl Default for Or"],["impl Default for Colon"],["impl Default for Where"],["impl Default for Generics"],["impl Default for Ref"],["impl Default for OrEq"],["impl Default for Extern"],["impl Default for Gt"],["impl Default for Shl"],["impl Default for Unsized"],["impl Default for Group"],["impl Default for Tilde"],["impl Default for Yield"],["impl Default for Not"],["impl Default for PlusEq"],["impl Default for Brace"],["impl Default for StarEq"],["impl Default for Minus"],["impl Default for Mod"],["impl Default for Use"],["impl Default for Unsafe"],["impl Default for Crate"],["impl Default for Struct"],["impl Default for Default"],["impl Default for Return"],["impl Default for Mut"],["impl Default for While"],["impl Default for Percent"],["impl Default for Impl"],["impl Default for Star"],["impl Default for Pound"],["impl Default for Static"],["impl Default for Move"],["impl Default for Continue"],["impl Default for Dyn"],["impl Default for Eq"],["impl Default for Override"],["impl Default for Final"],["impl Default for Question"],["impl Default for Priv"],["impl Default for Abstract"],["impl Default for Bracket"],["impl Default for AndEq"],["impl Default for Auto"],["impl<T, P> Default for Punctuated<T, P>"],["impl Default for EqEq"],["impl Default for Macro"],["impl Default for Ne"],["impl Default for DotDotEq"],["impl Default for Dollar"],["impl Default for Const"],["impl Default for Semi"],["impl Default for Pub"],["impl Default for CaretEq"],["impl Default for For"],["impl Default for BoundLifetimes"],["impl Default for Virtual"],["impl Default for If"],["impl Default for Slash"],["impl Default for Comma"],["impl Default for Paren"],["impl Default for ShlEq"],["impl Default for SelfValue"],["impl Default for Loop"],["impl Default for Ge"],["impl Default for SelfType"],["impl Default for MinusEq"],["impl Default for Become"],["impl Default for Trait"],["impl Default for Await"],["impl Default for Shr"],["impl Default for Let"],["impl Default for PathArguments"]], diff --git a/trait.impl/core/error/trait.Error.js b/trait.impl/core/error/trait.Error.js index 09754a1487..96b5847dc8 100644 --- a/trait.impl/core/error/trait.Error.js +++ b/trait.impl/core/error/trait.Error.js @@ -10,7 +10,7 @@ "proc_macro2":[["impl Error for LexError"]], "regex":[["impl Error for Error"]], "regex_automata":[["impl Error for BuildError"],["impl Error for PatternSetInsertError"],["impl Error for DeserializeError"],["impl Error for PatternIDError"],["impl Error for SmallIndexError"],["impl Error for GroupInfoError"],["impl Error for SerializeError"],["impl Error for UnicodeWordBoundaryError"],["impl Error for MatchError"],["impl Error for BuildError"],["impl Error for StateIDError"]], -"regex_syntax":[["impl Error for Error"],["impl Error for Error"],["impl Error for Error"],["impl Error for CaseFoldError"],["impl Error for UnicodeWordError"]], +"regex_syntax":[["impl Error for Error"],["impl Error for CaseFoldError"],["impl Error for UnicodeWordError"],["impl Error for Error"],["impl Error for Error"]], "strsim":[["impl Error for StrSimError"]], "syn":[["impl Error for Error"]], "tracing_core":[["impl Error for SetGlobalDefaultError"],["impl Error for ParseLevelError"],["impl Error for ParseLevelFilterError"]], diff --git a/trait.impl/core/fmt/trait.Debug.js b/trait.impl/core/fmt/trait.Debug.js index 753cfec8ab..cc14c947cf 100644 --- a/trait.impl/core/fmt/trait.Debug.js +++ b/trait.impl/core/fmt/trait.Debug.js @@ -37,7 +37,7 @@ "proc_macro2":[["impl Debug for TokenTree"],["impl Debug for LexError"],["impl Debug for Punct"],["impl Debug for Span"],["impl Debug for Spacing"],["impl Debug for Group"],["impl Debug for DelimSpan"],["impl Debug for TokenStream"],["impl Debug for Delimiter"],["impl Debug for Ident"],["impl Debug for Literal"],["impl Debug for IntoIter"]], "regex":[["impl Debug for CaptureLocations"],["impl<'r, 'h> Debug for Split<'r, 'h>"],["impl<'a> Debug for SetMatchesIter<'a>"],["impl<'c, 'h> Debug for SubCaptureMatches<'c, 'h>"],["impl Debug for Regex"],["impl<'s> Debug for NoExpand<'s>"],["impl<'h> Debug for Captures<'h>"],["impl<'h> Debug for Match<'h>"],["impl<'a, R: Debug + ?Sized> Debug for ReplacerRef<'a, R>"],["impl<'s> Debug for NoExpand<'s>"],["impl<'r, 'h> Debug for Matches<'r, 'h>"],["impl<'r, 'h> Debug for CaptureMatches<'r, 'h>"],["impl Debug for RegexSet"],["impl<'r> Debug for CaptureNames<'r>"],["impl Debug for SetMatchesIntoIter"],["impl Debug for CaptureLocations"],["impl<'h> Debug for Match<'h>"],["impl Debug for RegexBuilder"],["impl Debug for RegexSetBuilder"],["impl Debug for Error"],["impl<'c, 'h> Debug for SubCaptureMatches<'c, 'h>"],["impl<'r, 'h> Debug for SplitN<'r, 'h>"],["impl Debug for Regex"],["impl Debug for RegexBuilder"],["impl<'a, R: Debug + ?Sized> Debug for ReplacerRef<'a, R>"],["impl Debug for SetMatchesIntoIter"],["impl<'r, 'h> Debug for Split<'r, 'h>"],["impl<'r, 'h> Debug for Matches<'r, 'h>"],["impl<'h> Debug for Captures<'h>"],["impl Debug for RegexSet"],["impl Debug for SetMatches"],["impl<'r> Debug for CaptureNames<'r>"],["impl Debug for RegexSetBuilder"],["impl Debug for SetMatches"],["impl<'r, 'h> Debug for CaptureMatches<'r, 'h>"],["impl<'a> Debug for SetMatchesIter<'a>"],["impl<'r, 'h> Debug for SplitN<'r, 'h>"]], "regex_automata":[["impl<'h, F> Debug for TryHalfMatchesIter<'h, F>"],["impl<T: Debug, F> Debug for Pool<T, F>"],["impl Debug for ByteClasses"],["impl Debug for StateID"],["impl Debug for LookMatcher"],["impl<'a> Debug for GroupInfoAllNames<'a>"],["impl Debug for Config"],["impl Debug for SmallIndexError"],["impl Debug for Anchored"],["impl Debug for DeserializeError"],["impl<'h, F> Debug for TryCapturesIter<'h, F>"],["impl Debug for State"],["impl Debug for Unit"],["impl Debug for Match"],["impl<'h> Debug for Searcher<'h>"],["impl Debug for Config"],["impl Debug for Compiler"],["impl Debug for LookSetIter"],["impl Debug for Captures"],["impl Debug for DebugByte"],["impl<T: Debug, F: Fn() -> T> Debug for Lazy<T, F>"],["impl Debug for Config"],["impl Debug for Regex"],["impl Debug for PatternIDError"],["impl Debug for Cache"],["impl<'a> Debug for ByteClassElements<'a>"],["impl<'h, F: Debug> Debug for HalfMatchesIter<'h, F>"],["impl Debug for PatternID"],["impl<'r, 'h> Debug for SplitN<'r, 'h>"],["impl<'h, F: Debug> Debug for MatchesIter<'h, F>"],["impl Debug for BuildError"],["impl Debug for Prefilter"],["impl Debug for HalfMatch"],["impl Debug for Builder"],["impl Debug for Builder"],["impl<'a> Debug for CapturesPatternIter<'a>"],["impl Debug for Transition"],["impl Debug for PikeVM"],["impl Debug for SparseTransitions"],["impl<'r, 'h> Debug for Split<'r, 'h>"],["impl Debug for NonMaxUsize"],["impl Debug for SerializeError"],["impl<'a> Debug for ByteClassRepresentatives<'a>"],["impl Debug for Builder"],["impl Debug for MatchError"],["impl<'a> Debug for ByteClassIter<'a>"],["impl Debug for DenseTransitions"],["impl<B: Debug + ?Sized, T: Debug> Debug for AlignAs<B, T>"],["impl<'r, 'h> Debug for FindMatches<'r, 'h>"],["impl Debug for UnicodeWordBoundaryError"],["impl Debug for GroupInfoError"],["impl<'a> Debug for GroupInfoPatternNames<'a>"],["impl<'r, 'h> Debug for CapturesMatches<'r, 'h>"],["impl<'h, F: Debug> Debug for CapturesIter<'h, F>"],["impl Debug for WhichCaptures"],["impl<'a> Debug for PatternIter<'a>"],["impl<'r, 'c, 'h> Debug for FindMatches<'r, 'c, 'h>"],["impl Debug for Span"],["impl Debug for MatchKind"],["impl Debug for PatternSetInsertError"],["impl<'h, F> Debug for TryMatchesIter<'h, F>"],["impl Debug for Cache"],["impl Debug for Config"],["impl<'a, T: Send + Debug, F: Fn() -> T> Debug for PoolGuard<'a, T, F>"],["impl<'a> Debug for DebugHaystack<'a>"],["impl<'r, 'c, 'h> Debug for CapturesMatches<'r, 'c, 'h>"],["impl Debug for StateIDError"],["impl Debug for LookSet"],["impl Debug for MatchErrorKind"],["impl Debug for BuildError"],["impl<'a> Debug for PatternSetIter<'a>"],["impl Debug for GroupInfo"],["impl Debug for Look"],["impl<'h> Debug for Input<'h>"],["impl Debug for Config"],["impl Debug for NFA"],["impl Debug for SmallIndex"],["impl Debug for PatternSet"]], -"regex_syntax":[["impl Debug for Translator"],["impl Debug for Capture"],["impl Debug for ClassSetBinaryOp"],["impl Debug for ClassUnicodeRange"],["impl Debug for Position"],["impl Debug for Class"],["impl Debug for ClassSetItem"],["impl Debug for HirKind"],["impl Debug for ParserBuilder"],["impl Debug for ClassPerl"],["impl Debug for ClassBytes"],["impl Debug for Concat"],["impl Debug for LookSetIter"],["impl Debug for ClassSet"],["impl Debug for Literal"],["impl Debug for Repetition"],["impl Debug for Literal"],["impl Debug for ClassUnicode"],["impl Debug for Dot"],["impl Debug for ClassAscii"],["impl Debug for Look"],["impl Debug for ParserBuilder"],["impl Debug for LookSet"],["impl Debug for ErrorKind"],["impl Debug for HexLiteralKind"],["impl Debug for GroupKind"],["impl Debug for FlagsItem"],["impl Debug for Assertion"],["impl Debug for ClassSetRange"],["impl Debug for ClassBytesRange"],["impl Debug for Flag"],["impl Debug for Seq"],["impl Debug for ClassUnicodeOpKind"],["impl Debug for ErrorKind"],["impl Debug for ClassSetUnion"],["impl Debug for ClassAsciiKind"],["impl Debug for Error"],["impl Debug for Literal"],["impl Debug for Repetition"],["impl Debug for RepetitionOp"],["impl Debug for Alternation"],["impl Debug for TranslatorBuilder"],["impl Debug for RepetitionKind"],["impl Debug for Parser"],["impl Debug for ClassUnicode"],["impl<'a> Debug for ClassBytesIter<'a>"],["impl Debug for Extractor"],["impl Debug for ClassSetBinaryOpKind"],["impl Debug for ExtractKind"],["impl Debug for ClassBracketed"],["impl Debug for ClassPerlKind"],["impl Debug for Hir"],["impl Debug for Group"],["impl Debug for RepetitionRange"],["impl Debug for Properties"],["impl<'a> Debug for ClassUnicodeIter<'a>"],["impl Debug for LiteralKind"],["impl Debug for SpecialLiteralKind"],["impl Debug for Utf8Range"],["impl Debug for Utf8Sequence"],["impl Debug for SetFlags"],["impl Debug for Span"],["impl Debug for UnicodeWordError"],["impl Debug for CaptureName"],["impl Debug for Error"],["impl Debug for AssertionKind"],["impl Debug for ClassUnicodeKind"],["impl Debug for Utf8Sequences"],["impl Debug for Comment"],["impl Debug for Error"],["impl Debug for Printer"],["impl Debug for FlagsItemKind"],["impl Debug for CaseFoldError"],["impl Debug for Ast"],["impl Debug for Parser"],["impl Debug for Printer"],["impl Debug for Flags"],["impl Debug for WithComments"]], +"regex_syntax":[["impl Debug for Repetition"],["impl Debug for Alternation"],["impl Debug for Comment"],["impl Debug for Error"],["impl Debug for ClassUnicodeOpKind"],["impl Debug for UnicodeWordError"],["impl Debug for ParserBuilder"],["impl Debug for ClassUnicode"],["impl Debug for Literal"],["impl Debug for GroupKind"],["impl Debug for Printer"],["impl Debug for RepetitionOp"],["impl Debug for ClassPerlKind"],["impl Debug for Repetition"],["impl Debug for Literal"],["impl Debug for Utf8Sequence"],["impl Debug for HexLiteralKind"],["impl Debug for RepetitionKind"],["impl Debug for Parser"],["impl Debug for Class"],["impl Debug for Assertion"],["impl Debug for Literal"],["impl Debug for ClassUnicode"],["impl Debug for ErrorKind"],["impl Debug for Dot"],["impl Debug for LookSetIter"],["impl Debug for Ast"],["impl<'a> Debug for ClassUnicodeIter<'a>"],["impl Debug for Hir"],["impl Debug for Position"],["impl Debug for Error"],["impl Debug for ClassBytes"],["impl Debug for Flag"],["impl Debug for ClassBytesRange"],["impl Debug for ClassSetUnion"],["impl Debug for Utf8Range"],["impl Debug for Properties"],["impl Debug for CaseFoldError"],["impl Debug for Parser"],["impl Debug for AssertionKind"],["impl Debug for SetFlags"],["impl Debug for Seq"],["impl Debug for SpecialLiteralKind"],["impl Debug for Capture"],["impl Debug for ExtractKind"],["impl Debug for TranslatorBuilder"],["impl Debug for Group"],["impl Debug for Span"],["impl Debug for FlagsItemKind"],["impl<'a> Debug for ClassBytesIter<'a>"],["impl Debug for Error"],["impl Debug for ParserBuilder"],["impl Debug for ClassSetRange"],["impl Debug for ClassSetItem"],["impl Debug for ClassUnicodeRange"],["impl Debug for ClassUnicodeKind"],["impl Debug for LiteralKind"],["impl Debug for ClassSet"],["impl Debug for FlagsItem"],["impl Debug for Extractor"],["impl Debug for WithComments"],["impl Debug for ClassAscii"],["impl Debug for CaptureName"],["impl Debug for ClassAsciiKind"],["impl Debug for ClassPerl"],["impl Debug for Utf8Sequences"],["impl Debug for Look"],["impl Debug for Concat"],["impl Debug for Printer"],["impl Debug for Translator"],["impl Debug for Flags"],["impl Debug for ClassSetBinaryOp"],["impl Debug for ClassSetBinaryOpKind"],["impl Debug for ClassBracketed"],["impl Debug for ErrorKind"],["impl Debug for HirKind"],["impl Debug for RepetitionRange"],["impl Debug for LookSet"]], "rustc_demangle":[["impl Debug for TryDemangleError"],["impl<'a> Debug for Demangle<'a>"]], "sharded_slab":[["impl<T, C> Debug for OwnedEntry<T, C>
where\n T: Debug,\n C: Config,
"],["impl<'a, T, C> Debug for Ref<'a, T, C>
where\n T: Debug + Clear + Default,\n C: Config,
"],["impl Debug for DefaultConfig"],["impl<T, C> Debug for Pool<T, C>
where\n T: Debug + Clear + Default,\n C: Config,
"],["impl<'a, T: Debug, C: Debug + Config> Debug for UniqueIter<'a, T, C>"],["impl<T, C> Debug for OwnedRefMut<T, C>
where\n T: Debug + Clear + Default,\n C: Config,
"],["impl<'a, T, C> Debug for RefMut<'a, T, C>
where\n T: Debug + Clear + Default,\n C: Config,
"],["impl<T, C> Debug for OwnedRef<T, C>
where\n T: Debug + Clear + Default,\n C: Config,
"],["impl<T: Debug, C: Config> Debug for Slab<T, C>"],["impl<'a, T, C> Debug for Entry<'a, T, C>
where\n T: Debug,\n C: Config,
"],["impl<'a, T: Debug, C: Debug + Config> Debug for VacantEntry<'a, T, C>"]], "smallvec":[["impl<'a, T: 'a + Array> Debug for Drain<'a, T>
where\n T::Item: Debug,
"],["impl Debug for CollectionAllocErr"],["impl<A: Array> Debug for IntoIter<A>
where\n A::Item: Debug,
"],["impl<A: Array> Debug for SmallVec<A>
where\n A::Item: Debug,
"]], diff --git a/trait.impl/core/fmt/trait.Display.js b/trait.impl/core/fmt/trait.Display.js index c8cc192b8f..6626b1ba71 100644 --- a/trait.impl/core/fmt/trait.Display.js +++ b/trait.impl/core/fmt/trait.Display.js @@ -22,7 +22,7 @@ "proc_macro2":[["impl Display for TokenStream"],["impl Display for Ident"],["impl Display for Literal"],["impl Display for Group"],["impl Display for TokenTree"],["impl Display for LexError"],["impl Display for Punct"]], "regex":[["impl Display for Error"],["impl Display for Regex"],["impl Display for Regex"]], "regex_automata":[["impl Display for BuildError"],["impl Display for MatchError"],["impl Display for BuildError"],["impl Display for PatternSetInsertError"],["impl Display for StateIDError"],["impl Display for DeserializeError"],["impl Display for SerializeError"],["impl Display for UnicodeWordBoundaryError"],["impl Display for GroupInfoError"],["impl Display for PatternIDError"],["impl Display for SmallIndexError"]], -"regex_syntax":[["impl Display for Error"],["impl Display for Error"],["impl Display for UnicodeWordError"],["impl Display for Ast"],["impl Display for ErrorKind"],["impl Display for ErrorKind"],["impl Display for Hir"],["impl Display for CaseFoldError"],["impl Display for Error"]], +"regex_syntax":[["impl Display for ErrorKind"],["impl Display for Ast"],["impl Display for CaseFoldError"],["impl Display for UnicodeWordError"],["impl Display for ErrorKind"],["impl Display for Error"],["impl Display for Error"],["impl Display for Error"],["impl Display for Hir"]], "rustc_demangle":[["impl<'a> Display for Demangle<'a>"]], "smallvec":[["impl Display for CollectionAllocErr"]], "strsim":[["impl Display for StrSimError"]], diff --git a/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/trait.impl/core/iter/traits/iterator/trait.Iterator.js index 1fe72529a8..f859a5efc0 100644 --- a/trait.impl/core/iter/traits/iterator/trait.Iterator.js +++ b/trait.impl/core/iter/traits/iterator/trait.Iterator.js @@ -18,7 +18,7 @@ "proc_macro2":[["impl Iterator for IntoIter"]], "regex":[["impl<'r, 'h> Iterator for SplitN<'r, 'h>"],["impl Iterator for SetMatchesIntoIter"],["impl<'r, 'h> Iterator for CaptureMatches<'r, 'h>"],["impl<'a> Iterator for SetMatchesIter<'a>"],["impl<'r, 'h> Iterator for Matches<'r, 'h>"],["impl Iterator for SetMatchesIntoIter"],["impl<'r, 'h> Iterator for CaptureMatches<'r, 'h>"],["impl<'r> Iterator for CaptureNames<'r>"],["impl<'r, 'h> Iterator for Split<'r, 'h>"],["impl<'c, 'h> Iterator for SubCaptureMatches<'c, 'h>"],["impl<'r, 'h> Iterator for SplitN<'r, 'h>"],["impl<'c, 'h> Iterator for SubCaptureMatches<'c, 'h>"],["impl<'r> Iterator for CaptureNames<'r>"],["impl<'r, 'h> Iterator for Split<'r, 'h>"],["impl<'r, 'h> Iterator for Matches<'r, 'h>"],["impl<'a> Iterator for SetMatchesIter<'a>"]], "regex_automata":[["impl<'r, 'c, 'h> Iterator for FindMatches<'r, 'c, 'h>"],["impl<'r, 'h> Iterator for SplitN<'r, 'h>"],["impl<'h, F> Iterator for TryHalfMatchesIter<'h, F>
where\n F: FnMut(&Input<'_>) -> Result<Option<HalfMatch>, MatchError>,
"],["impl<'h, F> Iterator for HalfMatchesIter<'h, F>
where\n F: FnMut(&Input<'_>) -> Result<Option<HalfMatch>, MatchError>,
"],["impl<'h, F> Iterator for TryMatchesIter<'h, F>
where\n F: FnMut(&Input<'_>) -> Result<Option<Match>, MatchError>,
"],["impl<'a> Iterator for ByteClassIter<'a>"],["impl<'a> Iterator for PatternIter<'a>"],["impl Iterator for LookSetIter"],["impl<'r, 'h> Iterator for CapturesMatches<'r, 'h>"],["impl<'h, F> Iterator for MatchesIter<'h, F>
where\n F: FnMut(&Input<'_>) -> Result<Option<Match>, MatchError>,
"],["impl<'r, 'h> Iterator for Split<'r, 'h>"],["impl<'a> Iterator for PatternSetIter<'a>"],["impl<'r, 'c, 'h> Iterator for CapturesMatches<'r, 'c, 'h>"],["impl<'a> Iterator for CapturesPatternIter<'a>"],["impl<'h, F> Iterator for CapturesIter<'h, F>
where\n F: FnMut(&Input<'_>, &mut Captures) -> Result<(), MatchError>,
"],["impl<'h, F> Iterator for TryCapturesIter<'h, F>
where\n F: FnMut(&Input<'_>, &mut Captures) -> Result<(), MatchError>,
"],["impl<'a> Iterator for ByteClassRepresentatives<'a>"],["impl<'r, 'h> Iterator for FindMatches<'r, 'h>"],["impl<'a> Iterator for GroupInfoAllNames<'a>"],["impl<'a> Iterator for ByteClassElements<'a>"],["impl<'a> Iterator for GroupInfoPatternNames<'a>"]], -"regex_syntax":[["impl Iterator for LookSetIter"],["impl<'a> Iterator for ClassBytesIter<'a>"],["impl Iterator for Utf8Sequences"],["impl<'a> Iterator for ClassUnicodeIter<'a>"]], +"regex_syntax":[["impl<'a> Iterator for ClassBytesIter<'a>"],["impl<'a> Iterator for ClassUnicodeIter<'a>"],["impl Iterator for LookSetIter"],["impl Iterator for Utf8Sequences"]], "sharded_slab":[["impl<'a, T, C: Config> Iterator for UniqueIter<'a, T, C>"]], "smallvec":[["impl<'a, T: 'a + Array> Iterator for Drain<'a, T>"],["impl<A: Array> Iterator for IntoIter<A>"]], "syn":[["impl<'a, T> Iterator for IterMut<'a, T>"],["impl<'a, T> Iterator for Iter<'a, T>"],["impl<T> Iterator for IntoIter<T>"],["impl<T, P> Iterator for IntoPairs<T, P>"],["impl<'a, T, P> Iterator for Pairs<'a, T, P>"],["impl<'a, T, P> Iterator for PairsMut<'a, T, P>"]], diff --git a/trait.impl/core/marker/trait.Copy.js b/trait.impl/core/marker/trait.Copy.js index 88e2ec522a..2a29c12178 100644 --- a/trait.impl/core/marker/trait.Copy.js +++ b/trait.impl/core/marker/trait.Copy.js @@ -29,7 +29,7 @@ "proc_macro2":[["impl Copy for Delimiter"],["impl Copy for Span"],["impl Copy for DelimSpan"],["impl Copy for Spacing"]], "regex":[["impl<'h> Copy for Match<'h>"],["impl<'h> Copy for Match<'h>"]], "regex_automata":[["impl Copy for Unit"],["impl Copy for Match"],["impl Copy for StateID"],["impl Copy for WhichCaptures"],["impl Copy for ByteClasses"],["impl Copy for DebugByte"],["impl Copy for PatternID"],["impl Copy for LookSet"],["impl Copy for NonMaxUsize"],["impl Copy for Span"],["impl Copy for HalfMatch"],["impl Copy for Transition"],["impl Copy for Look"],["impl Copy for Anchored"],["impl Copy for SmallIndex"],["impl Copy for Config"],["impl Copy for MatchKind"]], -"regex_syntax":[["impl Copy for ClassUnicodeRange"],["impl Copy for Span"],["impl Copy for LookSet"],["impl Copy for Utf8Range"],["impl Copy for Utf8Sequence"],["impl Copy for Look"],["impl Copy for ClassBytesRange"],["impl Copy for Dot"],["impl Copy for ClassSetBinaryOpKind"],["impl Copy for Position"],["impl Copy for Flag"]], +"regex_syntax":[["impl Copy for Utf8Range"],["impl Copy for Flag"],["impl Copy for ClassUnicodeRange"],["impl Copy for Look"],["impl Copy for Position"],["impl Copy for ClassSetBinaryOpKind"],["impl Copy for Span"],["impl Copy for LookSet"],["impl Copy for ClassBytesRange"],["impl Copy for Utf8Sequence"],["impl Copy for Dot"]], "sharded_slab":[["impl Copy for DefaultConfig"]], "syn":[["impl Copy for Try"],["impl Copy for DotDotDot"],["impl Copy for Break"],["impl Copy for Match"],["impl Copy for Yield"],["impl Copy for Default"],["impl Copy for While"],["impl Copy for UnOp"],["impl Copy for AndEq"],["impl Copy for Abstract"],["impl Copy for For"],["impl Copy for Group"],["impl Copy for Trait"],["impl Copy for Shr"],["impl Copy for Mod"],["impl Copy for PercentEq"],["impl Copy for Move"],["impl Copy for Use"],["impl Copy for Bracket"],["impl Copy for PlusEq"],["impl Copy for DotDot"],["impl Copy for Slash"],["impl Copy for SelfValue"],["impl Copy for Shl"],["impl Copy for Else"],["impl Copy for Gt"],["impl Copy for Dyn"],["impl Copy for Minus"],["impl Copy for MinusEq"],["impl Copy for Struct"],["impl Copy for Caret"],["impl Copy for Comma"],["impl Copy for Unsafe"],["impl Copy for Continue"],["impl Copy for Pub"],["impl Copy for Percent"],["impl Copy for Final"],["impl Copy for Super"],["impl Copy for BinOp"],["impl Copy for SlashEq"],["impl Copy for PathSep"],["impl Copy for Type"],["impl Copy for CaretEq"],["impl<'a> Copy for Cursor<'a>"],["impl Copy for Ne"],["impl<'c, 'a> Copy for StepCursor<'c, 'a>"],["impl Copy for Or"],["impl Copy for RangeLimits"],["impl Copy for LArrow"],["impl Copy for Colon"],["impl Copy for Static"],["impl Copy for Pound"],["impl Copy for Await"],["impl Copy for In"],["impl Copy for Typeof"],["impl Copy for EqEq"],["impl Copy for Mut"],["impl Copy for AndAnd"],["impl Copy for Ref"],["impl<T, P> Copy for Pair<T, P>
where\n T: Copy,\n P: Copy,
"],["impl Copy for SelfType"],["impl Copy for Lt"],["impl Copy for Unsized"],["impl Copy for Not"],["impl Copy for Fn"],["impl Copy for Box"],["impl Copy for And"],["impl Copy for Brace"],["impl Copy for Become"],["impl Copy for Question"],["impl Copy for OrEq"],["impl Copy for As"],["impl Copy for Star"],["impl Copy for Let"],["impl Copy for Return"],["impl Copy for Where"],["impl Copy for Enum"],["impl Copy for Dot"],["impl Copy for Eq"],["impl Copy for Plus"],["impl Copy for Tilde"],["impl Copy for ShlEq"],["impl Copy for Underscore"],["impl Copy for Const"],["impl Copy for Semi"],["impl Copy for Override"],["impl Copy for At"],["impl Copy for Macro"],["impl Copy for Virtual"],["impl Copy for OrOr"],["impl Copy for Do"],["impl Copy for FatArrow"],["impl Copy for Union"],["impl Copy for Le"],["impl Copy for DotDotEq"],["impl Copy for Crate"],["impl Copy for StarEq"],["impl Copy for Loop"],["impl Copy for Paren"],["impl Copy for If"],["impl Copy for Async"],["impl Copy for Priv"],["impl Copy for TraitBoundModifier"],["impl Copy for ShrEq"],["impl Copy for AttrStyle"],["impl Copy for Auto"],["impl Copy for Dollar"],["impl Copy for Ge"],["impl Copy for Extern"],["impl Copy for Impl"],["impl Copy for RArrow"]], "tracing_core":[["impl Copy for LevelFilter"],["impl Copy for NoSubscriber"],["impl Copy for Level"]], diff --git a/trait.impl/core/marker/trait.StructuralEq.js b/trait.impl/core/marker/trait.StructuralEq.js index 445d819fb5..d11747e64d 100644 --- a/trait.impl/core/marker/trait.StructuralEq.js +++ b/trait.impl/core/marker/trait.StructuralEq.js @@ -24,7 +24,7 @@ "proc_macro2":[["impl StructuralEq for Delimiter"],["impl StructuralEq for Spacing"]], "regex":[["impl<'h> StructuralEq for Match<'h>"],["impl<'h> StructuralEq for Match<'h>"]], "regex_automata":[["impl StructuralEq for PatternID"],["impl StructuralEq for Span"],["impl StructuralEq for LookSet"],["impl StructuralEq for State"],["impl StructuralEq for StateID"],["impl StructuralEq for SparseTransitions"],["impl StructuralEq for SmallIndex"],["impl StructuralEq for PatternIDError"],["impl StructuralEq for Anchored"],["impl StructuralEq for StateIDError"],["impl StructuralEq for Match"],["impl StructuralEq for MatchKind"],["impl StructuralEq for Look"],["impl StructuralEq for DenseTransitions"],["impl StructuralEq for Unit"],["impl StructuralEq for SmallIndexError"],["impl StructuralEq for MatchError"],["impl StructuralEq for PatternSet"],["impl StructuralEq for MatchErrorKind"],["impl StructuralEq for Transition"],["impl StructuralEq for NonMaxUsize"],["impl StructuralEq for HalfMatch"]], -"regex_syntax":[["impl StructuralEq for Capture"],["impl StructuralEq for WithComments"],["impl StructuralEq for Error"],["impl StructuralEq for LookSet"],["impl StructuralEq for RepetitionRange"],["impl StructuralEq for AssertionKind"],["impl StructuralEq for SetFlags"],["impl StructuralEq for ClassUnicodeKind"],["impl StructuralEq for ClassPerl"],["impl StructuralEq for ClassSetItem"],["impl StructuralEq for Literal"],["impl StructuralEq for Alternation"],["impl StructuralEq for ClassAsciiKind"],["impl StructuralEq for ErrorKind"],["impl StructuralEq for Literal"],["impl StructuralEq for ClassUnicodeOpKind"],["impl StructuralEq for ClassSetBinaryOp"],["impl StructuralEq for ClassAscii"],["impl StructuralEq for Properties"],["impl StructuralEq for Span"],["impl StructuralEq for ClassSetUnion"],["impl StructuralEq for GroupKind"],["impl StructuralEq for Look"],["impl StructuralEq for Dot"],["impl StructuralEq for Flags"],["impl StructuralEq for Group"],["impl StructuralEq for Seq"],["impl StructuralEq for ClassUnicodeRange"],["impl StructuralEq for ClassBytesRange"],["impl StructuralEq for FlagsItemKind"],["impl StructuralEq for ClassBracketed"],["impl StructuralEq for ClassBytes"],["impl StructuralEq for RepetitionOp"],["impl StructuralEq for Error"],["impl StructuralEq for Position"],["impl StructuralEq for ClassUnicode"],["impl StructuralEq for Repetition"],["impl StructuralEq for Literal"],["impl StructuralEq for Hir"],["impl StructuralEq for Utf8Range"],["impl StructuralEq for Utf8Sequence"],["impl StructuralEq for RepetitionKind"],["impl StructuralEq for ErrorKind"],["impl StructuralEq for HexLiteralKind"],["impl StructuralEq for Comment"],["impl StructuralEq for CaptureName"],["impl StructuralEq for SpecialLiteralKind"],["impl StructuralEq for Class"],["impl StructuralEq for FlagsItem"],["impl StructuralEq for Concat"],["impl StructuralEq for Ast"],["impl StructuralEq for HirKind"],["impl StructuralEq for ClassSetRange"],["impl StructuralEq for Error"],["impl StructuralEq for Repetition"],["impl StructuralEq for Assertion"],["impl StructuralEq for LiteralKind"],["impl StructuralEq for ClassSet"],["impl StructuralEq for ClassSetBinaryOpKind"],["impl StructuralEq for ClassUnicode"],["impl StructuralEq for ClassPerlKind"],["impl StructuralEq for Flag"]], +"regex_syntax":[["impl StructuralEq for ClassUnicodeOpKind"],["impl StructuralEq for ErrorKind"],["impl StructuralEq for LiteralKind"],["impl StructuralEq for Dot"],["impl StructuralEq for RepetitionKind"],["impl StructuralEq for Comment"],["impl StructuralEq for Concat"],["impl StructuralEq for Seq"],["impl StructuralEq for RepetitionOp"],["impl StructuralEq for SetFlags"],["impl StructuralEq for Literal"],["impl StructuralEq for ClassUnicodeKind"],["impl StructuralEq for Utf8Range"],["impl StructuralEq for SpecialLiteralKind"],["impl StructuralEq for WithComments"],["impl StructuralEq for Look"],["impl StructuralEq for Repetition"],["impl StructuralEq for GroupKind"],["impl StructuralEq for ClassPerl"],["impl StructuralEq for ClassBracketed"],["impl StructuralEq for HexLiteralKind"],["impl StructuralEq for Alternation"],["impl StructuralEq for ClassSetBinaryOp"],["impl StructuralEq for Literal"],["impl StructuralEq for RepetitionRange"],["impl StructuralEq for ClassUnicode"],["impl StructuralEq for AssertionKind"],["impl StructuralEq for Capture"],["impl StructuralEq for Span"],["impl StructuralEq for Error"],["impl StructuralEq for Position"],["impl StructuralEq for ErrorKind"],["impl StructuralEq for FlagsItemKind"],["impl StructuralEq for CaptureName"],["impl StructuralEq for ClassAscii"],["impl StructuralEq for ClassSet"],["impl StructuralEq for ClassPerlKind"],["impl StructuralEq for Repetition"],["impl StructuralEq for Group"],["impl StructuralEq for Flag"],["impl StructuralEq for ClassSetItem"],["impl StructuralEq for Class"],["impl StructuralEq for Hir"],["impl StructuralEq for Assertion"],["impl StructuralEq for ClassSetBinaryOpKind"],["impl StructuralEq for Properties"],["impl StructuralEq for FlagsItem"],["impl StructuralEq for ClassBytesRange"],["impl StructuralEq for HirKind"],["impl StructuralEq for LookSet"],["impl StructuralEq for Literal"],["impl StructuralEq for ClassSetUnion"],["impl StructuralEq for ClassAsciiKind"],["impl StructuralEq for ClassUnicode"],["impl StructuralEq for Utf8Sequence"],["impl StructuralEq for Flags"],["impl StructuralEq for ClassSetRange"],["impl StructuralEq for Error"],["impl StructuralEq for Error"],["impl StructuralEq for Ast"],["impl StructuralEq for ClassUnicodeRange"],["impl StructuralEq for ClassBytes"]], "tracing_core":[["impl StructuralEq for Empty"],["impl StructuralEq for LevelFilter"],["impl StructuralEq for Kind"],["impl StructuralEq for Level"],["impl StructuralEq for Id"]], "tracing_error":[["impl StructuralEq for SpanTraceStatus"]], "tracing_subscriber":[["impl<M> StructuralEq for WithMaxLevel<M>"],["impl StructuralEq for Full"],["impl<A, B> StructuralEq for Tee<A, B>"],["impl StructuralEq for Uptime"],["impl StructuralEq for SystemTime"],["impl<M, F> StructuralEq for WithFilter<M, F>"],["impl StructuralEq for FmtSpan"],["impl<M> StructuralEq for WithMinLevel<M>"],["impl<A, B> StructuralEq for OrElse<A, B>"],["impl StructuralEq for Pretty"],["impl StructuralEq for Compact"],["impl<A, B> StructuralEq for EitherWriter<A, B>"],["impl StructuralEq for Directive"]], diff --git a/trait.impl/core/marker/trait.StructuralPartialEq.js b/trait.impl/core/marker/trait.StructuralPartialEq.js index e448aaf232..4704066edc 100644 --- a/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -27,7 +27,7 @@ "proc_macro2":[["impl StructuralPartialEq for Delimiter"],["impl StructuralPartialEq for Spacing"]], "regex":[["impl StructuralPartialEq for Error"],["impl<'h> StructuralPartialEq for Match<'h>"],["impl<'h> StructuralPartialEq for Match<'h>"]], "regex_automata":[["impl StructuralPartialEq for Anchored"],["impl StructuralPartialEq for NonMaxUsize"],["impl StructuralPartialEq for PatternSet"],["impl StructuralPartialEq for SmallIndex"],["impl StructuralPartialEq for PatternID"],["impl StructuralPartialEq for SmallIndexError"],["impl StructuralPartialEq for MatchError"],["impl StructuralPartialEq for MatchErrorKind"],["impl StructuralPartialEq for StateIDError"],["impl StructuralPartialEq for Match"],["impl StructuralPartialEq for Look"],["impl StructuralPartialEq for MatchKind"],["impl StructuralPartialEq for Span"],["impl StructuralPartialEq for State"],["impl StructuralPartialEq for StateID"],["impl StructuralPartialEq for SparseTransitions"],["impl StructuralPartialEq for HalfMatch"],["impl StructuralPartialEq for Transition"],["impl StructuralPartialEq for Unit"],["impl StructuralPartialEq for LookSet"],["impl StructuralPartialEq for PatternIDError"],["impl StructuralPartialEq for DenseTransitions"]], -"regex_syntax":[["impl StructuralPartialEq for Concat"],["impl StructuralPartialEq for Assertion"],["impl StructuralPartialEq for Seq"],["impl StructuralPartialEq for ClassUnicodeKind"],["impl StructuralPartialEq for Class"],["impl StructuralPartialEq for Flag"],["impl StructuralPartialEq for SetFlags"],["impl StructuralPartialEq for Comment"],["impl StructuralPartialEq for ClassSet"],["impl StructuralPartialEq for ClassUnicode"],["impl StructuralPartialEq for HirKind"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for SpecialLiteralKind"],["impl StructuralPartialEq for ErrorKind"],["impl StructuralPartialEq for CaptureName"],["impl StructuralPartialEq for GroupKind"],["impl StructuralPartialEq for RepetitionRange"],["impl StructuralPartialEq for ClassSetUnion"],["impl StructuralPartialEq for Utf8Range"],["impl StructuralPartialEq for ClassUnicode"],["impl StructuralPartialEq for ClassAscii"],["impl StructuralPartialEq for ClassSetBinaryOpKind"],["impl StructuralPartialEq for Repetition"],["impl StructuralPartialEq for ClassSetBinaryOp"],["impl StructuralPartialEq for LookSet"],["impl StructuralPartialEq for ClassBytesRange"],["impl StructuralPartialEq for ClassUnicodeOpKind"],["impl StructuralPartialEq for FlagsItemKind"],["impl StructuralPartialEq for Ast"],["impl StructuralPartialEq for Utf8Sequence"],["impl StructuralPartialEq for ClassSetItem"],["impl StructuralPartialEq for ClassAsciiKind"],["impl StructuralPartialEq for HexLiteralKind"],["impl StructuralPartialEq for Hir"],["impl StructuralPartialEq for Capture"],["impl StructuralPartialEq for Literal"],["impl StructuralPartialEq for Span"],["impl StructuralPartialEq for Flags"],["impl StructuralPartialEq for ClassBytes"],["impl StructuralPartialEq for ClassBracketed"],["impl StructuralPartialEq for ClassPerlKind"],["impl StructuralPartialEq for Properties"],["impl StructuralPartialEq for RepetitionOp"],["impl StructuralPartialEq for FlagsItem"],["impl StructuralPartialEq for Repetition"],["impl StructuralPartialEq for LiteralKind"],["impl StructuralPartialEq for Group"],["impl StructuralPartialEq for Look"],["impl StructuralPartialEq for RepetitionKind"],["impl StructuralPartialEq for Position"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for ErrorKind"],["impl StructuralPartialEq for ClassSetRange"],["impl StructuralPartialEq for WithComments"],["impl StructuralPartialEq for Dot"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for Literal"],["impl StructuralPartialEq for ClassUnicodeRange"],["impl StructuralPartialEq for AssertionKind"],["impl StructuralPartialEq for Alternation"],["impl StructuralPartialEq for Literal"],["impl StructuralPartialEq for ClassPerl"]], +"regex_syntax":[["impl StructuralPartialEq for ClassBytes"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for Repetition"],["impl StructuralPartialEq for ClassPerlKind"],["impl StructuralPartialEq for Alternation"],["impl StructuralPartialEq for Dot"],["impl StructuralPartialEq for Seq"],["impl StructuralPartialEq for Concat"],["impl StructuralPartialEq for Group"],["impl StructuralPartialEq for WithComments"],["impl StructuralPartialEq for Repetition"],["impl StructuralPartialEq for Ast"],["impl StructuralPartialEq for HexLiteralKind"],["impl StructuralPartialEq for ClassSetBinaryOpKind"],["impl StructuralPartialEq for ClassUnicode"],["impl StructuralPartialEq for ClassUnicodeOpKind"],["impl StructuralPartialEq for Capture"],["impl StructuralPartialEq for HirKind"],["impl StructuralPartialEq for FlagsItem"],["impl StructuralPartialEq for Literal"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for Flag"],["impl StructuralPartialEq for ClassSet"],["impl StructuralPartialEq for ClassUnicodeRange"],["impl StructuralPartialEq for CaptureName"],["impl StructuralPartialEq for Utf8Sequence"],["impl StructuralPartialEq for Hir"],["impl StructuralPartialEq for ClassSetBinaryOp"],["impl StructuralPartialEq for SpecialLiteralKind"],["impl StructuralPartialEq for FlagsItemKind"],["impl StructuralPartialEq for Error"],["impl StructuralPartialEq for ClassPerl"],["impl StructuralPartialEq for ClassBracketed"],["impl StructuralPartialEq for Literal"],["impl StructuralPartialEq for Comment"],["impl StructuralPartialEq for Look"],["impl StructuralPartialEq for LiteralKind"],["impl StructuralPartialEq for Utf8Range"],["impl StructuralPartialEq for RepetitionRange"],["impl StructuralPartialEq for ClassAscii"],["impl StructuralPartialEq for ClassBytesRange"],["impl StructuralPartialEq for ClassSetItem"],["impl StructuralPartialEq for Literal"],["impl StructuralPartialEq for Span"],["impl StructuralPartialEq for Flags"],["impl StructuralPartialEq for ClassUnicode"],["impl StructuralPartialEq for LookSet"],["impl StructuralPartialEq for ClassUnicodeKind"],["impl StructuralPartialEq for ClassSetUnion"],["impl StructuralPartialEq for ClassAsciiKind"],["impl StructuralPartialEq for AssertionKind"],["impl StructuralPartialEq for Assertion"],["impl StructuralPartialEq for Class"],["impl StructuralPartialEq for ClassSetRange"],["impl StructuralPartialEq for Properties"],["impl StructuralPartialEq for GroupKind"],["impl StructuralPartialEq for SetFlags"],["impl StructuralPartialEq for RepetitionKind"],["impl StructuralPartialEq for ErrorKind"],["impl StructuralPartialEq for ErrorKind"],["impl StructuralPartialEq for RepetitionOp"],["impl StructuralPartialEq for Position"]], "strsim":[["impl StructuralPartialEq for StrSimError"]], "tracing_core":[["impl StructuralPartialEq for LevelFilter"],["impl StructuralPartialEq for Level"],["impl StructuralPartialEq for Kind"],["impl StructuralPartialEq for Empty"],["impl StructuralPartialEq for Id"]], "tracing_error":[["impl StructuralPartialEq for SpanTraceStatus"]], diff --git a/trait.impl/core/ops/drop/trait.Drop.js b/trait.impl/core/ops/drop/trait.Drop.js index 7e49987ca6..3b8e063720 100644 --- a/trait.impl/core/ops/drop/trait.Drop.js +++ b/trait.impl/core/ops/drop/trait.Drop.js @@ -5,7 +5,7 @@ "inkwell":[["impl Drop for TargetMachine"],["impl<'ctx> Drop for DebugInfoBuilder<'ctx>"],["impl Drop for ExecutionEngine<'_>"],["impl Drop for Context"],["impl Drop for Builder<'_>"],["impl Drop for ObjectFile"],["impl Drop for Module<'_>"],["impl Drop for PassBuilderOptions"],["impl Drop for LLVMString"],["impl Drop for SectionIterator"],["impl Drop for TargetData"],["impl Drop for RelocationIterator"],["impl Drop for MemoryBuffer"],["impl Drop for GenericValue<'_>"],["impl<T> Drop for PassManager<T>"],["impl Drop for SymbolIterator"]], "itertools":[["impl<'a, I> Drop for Chunk<'a, I>
where\n I: Iterator,\n I::Item: 'a,
"],["impl<'a, K, I, F> Drop for Group<'a, K, I, F>
where\n I: Iterator,\n I::Item: 'a,
"]], "once_cell":[["impl<T> Drop for OnceBox<T>"]], -"regex_syntax":[["impl Drop for ClassSet"],["impl Drop for Hir"],["impl Drop for Ast"]], +"regex_syntax":[["impl Drop for Hir"],["impl Drop for Ast"],["impl Drop for ClassSet"]], "sharded_slab":[["impl<T, C> Drop for OwnedRef<T, C>
where\n T: Clear + Default,\n C: Config,
"],["impl<'a, T, C> Drop for RefMut<'a, T, C>
where\n T: Clear + Default,\n C: Config,
"],["impl<T, C> Drop for OwnedEntry<T, C>
where\n C: Config,
"],["impl<T, C> Drop for OwnedRefMut<T, C>
where\n T: Clear + Default,\n C: Config,
"],["impl<'a, T, C: Config> Drop for Entry<'a, T, C>"],["impl<'a, T, C> Drop for Ref<'a, T, C>
where\n T: Clear + Default,\n C: Config,
"]], "smallvec":[["impl<A: Array> Drop for SmallVec<A>"],["impl<A: Array> Drop for IntoIter<A>"],["impl<'a, T: 'a + Array> Drop for Drain<'a, T>"]], "syn":[["impl<'a> Drop for ParseBuffer<'a>"]], diff --git a/type.impl/core/result/enum.Result.js b/type.impl/core/result/enum.Result.js index 25cf9be1d7..26ae42fa82 100644 --- a/type.impl/core/result/enum.Result.js +++ b/type.impl/core/result/enum.Result.js @@ -1,7 +1,7 @@ (function() {var type_impls = { "clap":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"clap::error::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"clap::error::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"clap::error::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"clap::error::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"clap::error::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","clap::error::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","clap::error::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","clap::error::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","clap::error::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","clap::error::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","clap::error::Result"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","clap::error::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","clap::error::Result"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","clap::error::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","clap::error::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","clap::error::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","clap::error::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual)
The “return” type of this meta-function.
","Residual","clap::error::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","clap::error::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","clap::error::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","clap::error::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","clap::error::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","clap::error::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","clap::error::Result"],["
source§

impl From<StreamResult> for Result<MZStatus, MZError>

source§

fn from(res: StreamResult) -> Result<MZStatus, MZError>

Converts to this type from the input type.
","From","clap::error::Result"],["
source§

impl From<&StreamResult> for Result<MZStatus, MZError>

source§

fn from(res: &StreamResult) -> Result<MZStatus, MZError>

Converts to this type from the input type.
","From<&StreamResult>","clap::error::Result"]], "clap_builder":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"clap_builder::error::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"clap_builder::error::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"clap_builder::error::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"clap_builder::error::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"clap_builder::error::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","clap_builder::error::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","clap_builder::error::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","clap_builder::error::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","clap_builder::error::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","clap_builder::error::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","clap_builder::error::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual)
The “return” type of this meta-function.
","Residual","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","clap_builder::error::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","clap_builder::error::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","clap_builder::error::Result"],["
source§

impl From<StreamResult> for Result<MZStatus, MZError>

source§

fn from(res: StreamResult) -> Result<MZStatus, MZError>

Converts to this type from the input type.
","From","clap_builder::error::Result"],["
source§

impl From<&StreamResult> for Result<MZStatus, MZError>

source§

fn from(res: &StreamResult) -> Result<MZStatus, MZError>

Converts to this type from the input type.
","From<&StreamResult>","clap_builder::error::Result"]], -"edlang_parser":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"edlang_parser::lexer::Spanned"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","edlang_parser::lexer::Spanned"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","edlang_parser::lexer::Spanned"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","edlang_parser::lexer::Spanned"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","edlang_parser::lexer::Spanned"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","edlang_parser::lexer::Spanned"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","edlang_parser::lexer::Spanned"],["
source§

impl __ToTriple for Result<(usize, Token, usize), LexicalError>

","__ToTriple","edlang_parser::lexer::Spanned"]], +"edlang_parser":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"edlang_parser::lexer::Spanned"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","edlang_parser::lexer::Spanned"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","edlang_parser::lexer::Spanned"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","edlang_parser::lexer::Spanned"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","edlang_parser::lexer::Spanned"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","edlang_parser::lexer::Spanned"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","edlang_parser::lexer::Spanned"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","edlang_parser::lexer::Spanned"],["
source§

impl __ToTriple for Result<(usize, Token, usize), LexicalError>

","__ToTriple","edlang_parser::lexer::Spanned"]], "eyre":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"eyre::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"eyre::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"eyre::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"eyre::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"eyre::Result"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","eyre::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","eyre::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","eyre::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","eyre::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","eyre::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","eyre::Result"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","eyre::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","eyre::Result"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","eyre::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","eyre::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","eyre::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","eyre::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual)
The “return” type of this meta-function.
","Residual","eyre::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","eyre::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","eyre::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","eyre::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","eyre::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","eyre::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","eyre::Result"],["
source§

impl From<StreamResult> for Result<MZStatus, MZError>

source§

fn from(res: StreamResult) -> Result<MZStatus, MZError>

Converts to this type from the input type.
","From","eyre::Result"],["
source§

impl From<&StreamResult> for Result<MZStatus, MZError>

source§

fn from(res: &StreamResult) -> Result<MZStatus, MZError>

Converts to this type from the input type.
","From<&StreamResult>","eyre::Result"],["
source§

impl<T, E> WrapErr<T, E> for Result<T, E>
where\n E: StdError + Send + Sync + 'static,

source§

fn wrap_err<D>(self, msg: D) -> Result<T, Report>
where\n D: Display + Send + Sync + 'static,

Wrap the error value with a new adhoc error
source§

fn wrap_err_with<D, F>(self, msg: F) -> Result<T, Report>
where\n D: Display + Send + Sync + 'static,\n F: FnOnce() -> D,

Wrap the error value with a new adhoc error that is evaluated lazily\nonly once an error does occur.
source§

fn context<D>(self, msg: D) -> Result<T, Report>
where\n D: Display + Send + Sync + 'static,

Compatibility re-export of wrap_err for interop with anyhow
source§

fn with_context<D, F>(self, msg: F) -> Result<T, Report>
where\n D: Display + Send + Sync + 'static,\n F: FnOnce() -> D,

Compatibility re-export of wrap_err_with for interop with anyhow
","WrapErr","eyre::Result"]], "gimli":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"gimli::read::Result"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"gimli::read::Result"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"gimli::read::Result"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"gimli::read::Result"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"gimli::read::Result"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","gimli::read::Result"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","gimli::read::Result"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","gimli::read::Result"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","gimli::read::Result"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","gimli::read::Result"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","gimli::read::Result"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual)
The “return” type of this meta-function.
","Residual","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","gimli::read::Result"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","gimli::read::Result"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","gimli::read::Result"]], "lalrpop_util":[["
source§

impl<T, E> Result<T, E>

1.0.0 (const: 1.48.0) · source

pub const fn is_ok(&self) -> bool

Returns true if the result is Ok.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_ok(), true);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_ok(), false);
\n
1.70.0 · source

pub fn is_ok_and(self, f: impl FnOnce(T) -> bool) -> bool

Returns true if the result is Ok and the value inside of it matches a predicate.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.is_ok_and(|x| x > 1), true);\n\nlet x: Result<u32, &str> = Ok(0);\nassert_eq!(x.is_ok_and(|x| x > 1), false);\n\nlet x: Result<u32, &str> = Err(\"hey\");\nassert_eq!(x.is_ok_and(|x| x > 1), false);
\n
1.0.0 (const: 1.48.0) · source

pub const fn is_err(&self) -> bool

Returns true if the result is Err.

\n
Examples
\n
let x: Result<i32, &str> = Ok(-3);\nassert_eq!(x.is_err(), false);\n\nlet x: Result<i32, &str> = Err(\"Some error message\");\nassert_eq!(x.is_err(), true);
\n
1.70.0 · source

pub fn is_err_and(self, f: impl FnOnce(E) -> bool) -> bool

Returns true if the result is Err and the value inside of it matches a predicate.

\n
Examples
\n
use std::io::{Error, ErrorKind};\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::NotFound, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), true);\n\nlet x: Result<u32, Error> = Err(Error::new(ErrorKind::PermissionDenied, \"!\"));\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);\n\nlet x: Result<u32, Error> = Ok(123);\nassert_eq!(x.is_err_and(|x| x.kind() == ErrorKind::NotFound), false);
\n
1.0.0 · source

pub fn ok(self) -> Option<T>

Converts from Result<T, E> to Option<T>.

\n

Converts self into an Option<T>, consuming self,\nand discarding the error, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.ok(), Some(2));\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.ok(), None);
\n
1.0.0 · source

pub fn err(self) -> Option<E>

Converts from Result<T, E> to Option<E>.

\n

Converts self into an Option<E>, consuming self,\nand discarding the success value, if any.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.err(), None);\n\nlet x: Result<u32, &str> = Err(\"Nothing here\");\nassert_eq!(x.err(), Some(\"Nothing here\"));
\n
1.0.0 (const: 1.48.0) · source

pub const fn as_ref(&self) -> Result<&T, &E>

Converts from &Result<T, E> to Result<&T, &E>.

\n

Produces a new Result, containing a reference\ninto the original, leaving the original in place.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.as_ref(), Ok(&2));\n\nlet x: Result<u32, &str> = Err(\"Error\");\nassert_eq!(x.as_ref(), Err(&\"Error\"));
\n
1.0.0 (const: unstable) · source

pub fn as_mut(&mut self) -> Result<&mut T, &mut E>

Converts from &mut Result<T, E> to Result<&mut T, &mut E>.

\n
Examples
\n
fn mutate(r: &mut Result<i32, i32>) {\n    match r.as_mut() {\n        Ok(v) => *v = 42,\n        Err(e) => *e = 0,\n    }\n}\n\nlet mut x: Result<i32, i32> = Ok(2);\nmutate(&mut x);\nassert_eq!(x.unwrap(), 42);\n\nlet mut x: Result<i32, i32> = Err(13);\nmutate(&mut x);\nassert_eq!(x.unwrap_err(), 0);
\n
1.0.0 · source

pub fn map<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> U,

Maps a Result<T, E> to Result<U, E> by applying a function to a\ncontained Ok value, leaving an Err value untouched.

\n

This function can be used to compose the results of two functions.

\n
Examples
\n

Print the numbers on each line of a string multiplied by two.

\n\n
let line = \"1\\n2\\n3\\n4\\n\";\n\nfor num in line.lines() {\n    match num.parse::<i32>().map(|i| i * 2) {\n        Ok(n) => println!(\"{n}\"),\n        Err(..) => {}\n    }\n}
\n
1.41.0 · source

pub fn map_or<U, F>(self, default: U, f: F) -> U
where\n F: FnOnce(T) -> U,

Returns the provided default (if Err), or\napplies a function to the contained value (if Ok).

\n

Arguments passed to map_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use map_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let x: Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or(42, |v| v.len()), 3);\n\nlet x: Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or(42, |v| v.len()), 42);
\n
1.41.0 · source

pub fn map_or_else<U, D, F>(self, default: D, f: F) -> U
where\n D: FnOnce(E) -> U,\n F: FnOnce(T) -> U,

Maps a Result<T, E> to U by applying fallback function default to\na contained Err value, or function f to a contained Ok value.

\n

This function can be used to unpack a successful result\nwhile handling an error.

\n
Examples
\n
let k = 21;\n\nlet x : Result<_, &str> = Ok(\"foo\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 3);\n\nlet x : Result<&str, _> = Err(\"bar\");\nassert_eq!(x.map_or_else(|e| k * 2, |v| v.len()), 42);
\n
1.0.0 · source

pub fn map_err<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> F,

Maps a Result<T, E> to Result<T, F> by applying a function to a\ncontained Err value, leaving an Ok value untouched.

\n

This function can be used to pass through a successful result while handling\nan error.

\n
Examples
\n
fn stringify(x: u32) -> String { format!(\"error code: {x}\") }\n\nlet x: Result<u32, u32> = Ok(2);\nassert_eq!(x.map_err(stringify), Ok(2));\n\nlet x: Result<u32, u32> = Err(13);\nassert_eq!(x.map_err(stringify), Err(\"error code: 13\".to_string()));
\n
1.76.0 · source

pub fn inspect<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&T),

Calls the provided closure with a reference to the contained value (if Ok).

\n
Examples
\n
let x: u8 = \"4\"\n    .parse::<u8>()\n    .inspect(|x| println!(\"original: {x}\"))\n    .map(|x| x.pow(3))\n    .expect(\"failed to parse number\");
\n
1.76.0 · source

pub fn inspect_err<F>(self, f: F) -> Result<T, E>
where\n F: FnOnce(&E),

Calls the provided closure with a reference to the contained error (if Err).

\n
Examples
\n
use std::{fs, io};\n\nfn read() -> io::Result<String> {\n    fs::read_to_string(\"address.txt\")\n        .inspect_err(|e| eprintln!(\"failed to read file: {e}\"))\n}
\n
1.47.0 · source

pub fn as_deref(&self) -> Result<&<T as Deref>::Target, &E>
where\n T: Deref,

Converts from Result<T, E> (or &Result<T, E>) to Result<&<T as Deref>::Target, &E>.

\n

Coerces the Ok variant of the original Result via Deref\nand returns the new Result.

\n
Examples
\n
let x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&str, &u32> = Ok(\"hello\");\nassert_eq!(x.as_deref(), y);\n\nlet x: Result<String, u32> = Err(42);\nlet y: Result<&str, &u32> = Err(&42);\nassert_eq!(x.as_deref(), y);
\n
1.47.0 · source

pub fn as_deref_mut(&mut self) -> Result<&mut <T as Deref>::Target, &mut E>
where\n T: DerefMut,

Converts from Result<T, E> (or &mut Result<T, E>) to Result<&mut <T as DerefMut>::Target, &mut E>.

\n

Coerces the Ok variant of the original Result via DerefMut\nand returns the new Result.

\n
Examples
\n
let mut s = \"HELLO\".to_string();\nlet mut x: Result<String, u32> = Ok(\"hello\".to_string());\nlet y: Result<&mut str, &mut u32> = Ok(&mut s);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);\n\nlet mut i = 42;\nlet mut x: Result<String, u32> = Err(42);\nlet y: Result<&mut str, &mut u32> = Err(&mut i);\nassert_eq!(x.as_deref_mut().map(|x| { x.make_ascii_uppercase(); x }), y);
\n
1.0.0 · source

pub fn iter(&self) -> Iter<'_, T>

Returns an iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(7);\nassert_eq!(x.iter().next(), Some(&7));\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter().next(), None);
\n
1.0.0 · source

pub fn iter_mut(&mut self) -> IterMut<'_, T>

Returns a mutable iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let mut x: Result<u32, &str> = Ok(7);\nmatch x.iter_mut().next() {\n    Some(v) => *v = 40,\n    None => {},\n}\nassert_eq!(x, Ok(40));\n\nlet mut x: Result<u32, &str> = Err(\"nothing!\");\nassert_eq!(x.iter_mut().next(), None);
\n
1.4.0 · source

pub fn expect(self, msg: &str) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message including the\npassed message, and the content of the Err.

\n
Examples
\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.expect(\"Testing expect\"); // panics with `Testing expect: emergency failure`
\n
Recommended Message Style
\n

We recommend that expect messages are used to describe the reason you\nexpect the Result should be Ok.

\n\n
let path = std::env::var(\"IMPORTANT_PATH\")\n    .expect(\"env variable `IMPORTANT_PATH` should be set by `wrapper_script.sh`\");
\n

Hint: If you’re having trouble remembering how to phrase expect\nerror messages remember to focus on the word “should” as in “env\nvariable should be set by blah” or “the given binary should be available\nand executable by the current user”.

\n

For more detail on expect message styles and the reasoning behind our recommendation please\nrefer to the section on “Common Message\nStyles” in the\nstd::error module docs.

\n
1.0.0 · source

pub fn unwrap(self) -> T
where\n E: Debug,

Returns the contained Ok value, consuming the self value.

\n

Because this function may panic, its use is generally discouraged.\nInstead, prefer to use pattern matching and handle the Err\ncase explicitly, or call unwrap_or, unwrap_or_else, or\nunwrap_or_default.

\n
Panics
\n

Panics if the value is an Err, with a panic message provided by the\nErr’s value.

\n
Examples
\n

Basic usage:

\n\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(x.unwrap(), 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nx.unwrap(); // panics with `emergency failure`
\n
1.16.0 · source

pub fn unwrap_or_default(self) -> T
where\n T: Default,

Returns the contained Ok value or a default

\n

Consumes the self argument then, if Ok, returns the contained\nvalue, otherwise if Err, returns the default value for that\ntype.

\n
Examples
\n

Converts a string to an integer, turning poorly-formed strings\ninto 0 (the default value for integers). parse converts\na string to any other type that implements FromStr, returning an\nErr on error.

\n\n
let good_year_from_input = \"1909\";\nlet bad_year_from_input = \"190blarg\";\nlet good_year = good_year_from_input.parse().unwrap_or_default();\nlet bad_year = bad_year_from_input.parse().unwrap_or_default();\n\nassert_eq!(1909, good_year);\nassert_eq!(0, bad_year);
\n
1.17.0 · source

pub fn expect_err(self, msg: &str) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a panic message including the\npassed message, and the content of the Ok.

\n
Examples
\n
let x: Result<u32, &str> = Ok(10);\nx.expect_err(\"Testing expect_err\"); // panics with `Testing expect_err: 10`
\n
1.0.0 · source

pub fn unwrap_err(self) -> E
where\n T: Debug,

Returns the contained Err value, consuming the self value.

\n
Panics
\n

Panics if the value is an Ok, with a custom panic message provided\nby the Ok’s value.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nx.unwrap_err(); // panics with `2`
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(x.unwrap_err(), \"emergency failure\");
\n
source

pub fn into_ok(self) -> T
where\n E: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Ok value, but never panics.

\n

Unlike unwrap, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap as a maintainability safeguard that will fail\nto compile if the error type of the Result is later changed\nto an error that can actually occur.

\n
Examples
\n
\nfn only_good_news() -> Result<String, !> {\n    Ok(\"this is fine\".into())\n}\n\nlet s: String = only_good_news().into_ok();\nprintln!(\"{s}\");
\n
source

pub fn into_err(self) -> E
where\n T: Into<!>,

🔬This is a nightly-only experimental API. (unwrap_infallible)

Returns the contained Err value, but never panics.

\n

Unlike unwrap_err, this method is known to never panic on the\nresult types it is implemented for. Therefore, it can be used\ninstead of unwrap_err as a maintainability safeguard that will fail\nto compile if the ok type of the Result is later changed\nto a type that can actually occur.

\n
Examples
\n
\nfn only_bad_news() -> Result<!, String> {\n    Err(\"Oops, it failed\".into())\n}\n\nlet error: String = only_bad_news().into_err();\nprintln!(\"{error}\");
\n
1.0.0 · source

pub fn and<U>(self, res: Result<U, E>) -> Result<U, E>

Returns res if the result is Ok, otherwise returns the Err value of self.

\n

Arguments passed to and are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use and_then, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<&str, &str> = Ok(\"foo\");\nassert_eq!(x.and(y), Err(\"early error\"));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<&str, &str> = Err(\"late error\");\nassert_eq!(x.and(y), Err(\"not a 2\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<&str, &str> = Ok(\"different result type\");\nassert_eq!(x.and(y), Ok(\"different result type\"));
\n
1.0.0 · source

pub fn and_then<U, F>(self, op: F) -> Result<U, E>
where\n F: FnOnce(T) -> Result<U, E>,

Calls op if the result is Ok, otherwise returns the Err value of self.

\n

This function can be used for control flow based on Result values.

\n
Examples
\n
fn sq_then_to_string(x: u32) -> Result<String, &'static str> {\n    x.checked_mul(x).map(|sq| sq.to_string()).ok_or(\"overflowed\")\n}\n\nassert_eq!(Ok(2).and_then(sq_then_to_string), Ok(4.to_string()));\nassert_eq!(Ok(1_000_000).and_then(sq_then_to_string), Err(\"overflowed\"));\nassert_eq!(Err(\"not a number\").and_then(sq_then_to_string), Err(\"not a number\"));
\n

Often used to chain fallible operations that may return Err.

\n\n
use std::{io::ErrorKind, path::Path};\n\n// Note: on Windows \"/\" maps to \"C:\\\"\nlet root_modified_time = Path::new(\"/\").metadata().and_then(|md| md.modified());\nassert!(root_modified_time.is_ok());\n\nlet should_fail = Path::new(\"/bad/path\").metadata().and_then(|md| md.modified());\nassert!(should_fail.is_err());\nassert_eq!(should_fail.unwrap_err().kind(), ErrorKind::NotFound);
\n
1.0.0 · source

pub fn or<F>(self, res: Result<T, F>) -> Result<T, F>

Returns res if the result is Err, otherwise returns the Ok value of self.

\n

Arguments passed to or are eagerly evaluated; if you are passing the\nresult of a function call, it is recommended to use or_else, which is\nlazily evaluated.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"early error\");\nlet y: Result<u32, &str> = Ok(2);\nassert_eq!(x.or(y), Ok(2));\n\nlet x: Result<u32, &str> = Err(\"not a 2\");\nlet y: Result<u32, &str> = Err(\"late error\");\nassert_eq!(x.or(y), Err(\"late error\"));\n\nlet x: Result<u32, &str> = Ok(2);\nlet y: Result<u32, &str> = Ok(100);\nassert_eq!(x.or(y), Ok(2));
\n
1.0.0 · source

pub fn or_else<F, O>(self, op: O) -> Result<T, F>
where\n O: FnOnce(E) -> Result<T, F>,

Calls op if the result is Err, otherwise returns the Ok value of self.

\n

This function can be used for control flow based on result values.

\n
Examples
\n
fn sq(x: u32) -> Result<u32, u32> { Ok(x * x) }\nfn err(x: u32) -> Result<u32, u32> { Err(x) }\n\nassert_eq!(Ok(2).or_else(sq).or_else(sq), Ok(2));\nassert_eq!(Ok(2).or_else(err).or_else(sq), Ok(2));\nassert_eq!(Err(3).or_else(sq).or_else(err), Ok(9));\nassert_eq!(Err(3).or_else(err).or_else(err), Err(3));
\n
1.0.0 · source

pub fn unwrap_or(self, default: T) -> T

Returns the contained Ok value or a provided default.

\n

Arguments passed to unwrap_or are eagerly evaluated; if you are passing\nthe result of a function call, it is recommended to use unwrap_or_else,\nwhich is lazily evaluated.

\n
Examples
\n
let default = 2;\nlet x: Result<u32, &str> = Ok(9);\nassert_eq!(x.unwrap_or(default), 9);\n\nlet x: Result<u32, &str> = Err(\"error\");\nassert_eq!(x.unwrap_or(default), default);
\n
1.0.0 · source

pub fn unwrap_or_else<F>(self, op: F) -> T
where\n F: FnOnce(E) -> T,

Returns the contained Ok value or computes it from a closure.

\n
Examples
\n
fn count(x: &str) -> usize { x.len() }\n\nassert_eq!(Ok(2).unwrap_or_else(count), 2);\nassert_eq!(Err(\"foo\").unwrap_or_else(count), 3);
\n
1.58.0 · source

pub unsafe fn unwrap_unchecked(self) -> T

Returns the contained Ok value, consuming the self value,\nwithout checking that the value is not an Err.

\n
Safety
\n

Calling this method on an Err is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nassert_eq!(unsafe { x.unwrap_unchecked() }, 2);
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nunsafe { x.unwrap_unchecked(); } // Undefined behavior!
\n
1.58.0 · source

pub unsafe fn unwrap_err_unchecked(self) -> E

Returns the contained Err value, consuming the self value,\nwithout checking that the value is not an Ok.

\n
Safety
\n

Calling this method on an Ok is undefined behavior.

\n
Examples
\n
let x: Result<u32, &str> = Ok(2);\nunsafe { x.unwrap_err_unchecked() }; // Undefined behavior!
\n\n
let x: Result<u32, &str> = Err(\"emergency failure\");\nassert_eq!(unsafe { x.unwrap_err_unchecked() }, \"emergency failure\");
\n
",0,"lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E> Result<&T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let val = 12;\nlet x: Result<&i32, i32> = Ok(&val);\nassert_eq!(x, Ok(&12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E> Result<&mut T, E>

1.59.0 · source

pub fn copied(self) -> Result<T, E>
where\n T: Copy,

Maps a Result<&mut T, E> to a Result<T, E> by copying the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet copied = x.copied();\nassert_eq!(copied, Ok(12));
\n
1.59.0 · source

pub fn cloned(self) -> Result<T, E>
where\n T: Clone,

Maps a Result<&mut T, E> to a Result<T, E> by cloning the contents of the\nOk part.

\n
Examples
\n
let mut val = 12;\nlet x: Result<&mut i32, i32> = Ok(&mut val);\nassert_eq!(x, Ok(&mut 12));\nlet cloned = x.cloned();\nassert_eq!(cloned, Ok(12));
\n
",0,"lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E> Result<Option<T>, E>

1.33.0 (const: unstable) · source

pub fn transpose(self) -> Option<Result<T, E>>

Transposes a Result of an Option into an Option of a Result.

\n

Ok(None) will be mapped to None.\nOk(Some(_)) and Err(_) will be mapped to Some(Ok(_)) and Some(Err(_)).

\n
Examples
\n
#[derive(Debug, Eq, PartialEq)]\nstruct SomeErr;\n\nlet x: Result<Option<i32>, SomeErr> = Ok(Some(5));\nlet y: Option<Result<i32, SomeErr>> = Some(Ok(5));\nassert_eq!(x.transpose(), y);
\n
",0,"lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E> Result<Result<T, E>, E>

source

pub fn flatten(self) -> Result<T, E>

🔬This is a nightly-only experimental API. (result_flattening)

Converts from Result<Result<T, E>, E> to Result<T, E>

\n
Examples
\n
#![feature(result_flattening)]\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Ok(\"hello\"));\nassert_eq!(Ok(\"hello\"), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Ok(Err(6));\nassert_eq!(Err(6), x.flatten());\n\nlet x: Result<Result<&'static str, u32>, u32> = Err(6);\nassert_eq!(Err(6), x.flatten());
\n

Flattening only removes one level of nesting at a time:

\n\n
#![feature(result_flattening)]\nlet x: Result<Result<Result<&'static str, u32>, u32>, u32> = Ok(Ok(Ok(\"hello\")));\nassert_eq!(Ok(Ok(\"hello\")), x.flatten());\nassert_eq!(Ok(\"hello\"), x.flatten().flatten());
\n
",0,"lalrpop_util::state_machine::ParseResult"],["
1.61.0 · source§

impl<T, E> Termination for Result<T, E>
where\n T: Termination,\n E: Debug,

source§

fn report(self) -> ExitCode

Is called to get the representation of the value as status code.\nThis status code is returned to the operating system.
","Termination","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> PartialOrd for Result<T, E>
where\n T: PartialOrd,\n E: PartialOrd,

source§

fn partial_cmp(&self, other: &Result<T, E>) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <=\noperator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >=\noperator. Read more
","PartialOrd","lalrpop_util::state_machine::ParseResult"],["
1.16.0 · source§

impl<T, U, E> Product<Result<U, E>> for Result<T, E>
where\n T: Product<U>,

source§

fn product<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the product of all elements is returned.

\n
Examples
\n

This multiplies each number in a vector of strings,\nif a string could not be parsed the operation returns Err:

\n\n
let nums = vec![\"5\", \"10\", \"1\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert_eq!(total, Ok(100));\nlet nums = vec![\"5\", \"10\", \"one\", \"2\"];\nlet total: Result<usize, _> = nums.iter().map(|w| w.parse::<usize>()).product();\nassert!(total.is_err());
\n
","Product>","lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E, F> FromResidual<Result<Infallible, E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(residual: Result<Infallible, E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E, F> FromResidual<Yeet<E>> for Result<T, F>
where\n F: From<E>,

source§

fn from_residual(_: Yeet<E>) -> Result<T, F>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from a compatible Residual type. Read more
","FromResidual>","lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E> Try for Result<T, E>

§

type Output = T

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value produced by ? when not short-circuiting.
§

type Residual = Result<Infallible, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
The type of the value passed to FromResidual::from_residual\nas part of ? when short-circuiting. Read more
source§

fn from_output(output: <Result<T, E> as Try>::Output) -> Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2)
Constructs the type from its Output type. Read more
source§

fn branch(\n self\n) -> ControlFlow<<Result<T, E> as Try>::Residual, <Result<T, E> as Try>::Output>

🔬This is a nightly-only experimental API. (try_trait_v2)
Used in ? to decide whether the operator should produce a value\n(because this returned ControlFlow::Continue)\nor propagate a value back to the caller\n(because this returned ControlFlow::Break). Read more
","Try","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> Clone for Result<T, E>
where\n T: Clone,\n E: Clone,

source§

fn clone(&self) -> Result<T, E>

Returns a copy of the value. Read more
source§

fn clone_from(&mut self, source: &Result<T, E>)

Performs copy-assignment from source. Read more
","Clone","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<A, E, V> FromIterator<Result<A, E>> for Result<V, E>
where\n V: FromIterator<A>,

source§

fn from_iter<I>(iter: I) -> Result<V, E>
where\n I: IntoIterator<Item = Result<A, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err occur, a\ncontainer with the values of each Result is returned.

\n

Here is an example which increments every integer in a vector,\nchecking for overflow:

\n\n
let v = vec![1, 2];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_add(1).ok_or(\"Overflow!\")\n).collect();\nassert_eq!(res, Ok(vec![2, 3]));
\n

Here is another example that tries to subtract one from another list\nof integers, this time checking for underflow:

\n\n
let v = vec![1, 2, 0];\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32|\n    x.checked_sub(1).ok_or(\"Underflow!\")\n).collect();\nassert_eq!(res, Err(\"Underflow!\"));
\n

Here is a variation on the previous example, showing that no\nfurther elements are taken from iter after the first Err.

\n\n
let v = vec![3, 2, 1, 10];\nlet mut shared = 0;\nlet res: Result<Vec<u32>, &'static str> = v.iter().map(|x: &u32| {\n    shared += x;\n    x.checked_sub(2).ok_or(\"Underflow!\")\n}).collect();\nassert_eq!(res, Err(\"Underflow!\"));\nassert_eq!(shared, 6);
\n

Since the third element caused an underflow, no further elements were taken,\nso the final value of shared is 6 (= 3 + 2 + 1), not 16.

\n
","FromIterator>","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> StructuralEq for Result<T, E>

","StructuralEq","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> Eq for Result<T, E>
where\n T: Eq,\n E: Eq,

","Eq","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> Hash for Result<T, E>
where\n T: Hash,\n E: Hash,

source§

fn hash<__H>(&self, state: &mut __H)
where\n __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where\n H: Hasher,\n Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
","Hash","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> Ord for Result<T, E>
where\n T: Ord,\n E: Ord,

source§

fn cmp(&self, other: &Result<T, E>) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where\n Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where\n Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
","Ord","lalrpop_util::state_machine::ParseResult"],["
source§

impl<T, E> Residual<T> for Result<Infallible, E>

§

type TryType = Result<T, E>

🔬This is a nightly-only experimental API. (try_trait_v2_residual)
The “return” type of this meta-function.
","Residual","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> PartialEq for Result<T, E>
where\n T: PartialEq,\n E: PartialEq,

source§

fn eq(&self, other: &Result<T, E>) -> bool

This method tests for self and other values to be equal, and is used\nby ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always\nsufficient, and should not be overridden without very good reason.
","PartialEq","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> IntoIterator for Result<T, E>

source§

fn into_iter(self) -> IntoIter<T>

Returns a consuming iterator over the possibly contained value.

\n

The iterator yields one value if the result is Result::Ok, otherwise none.

\n
Examples
\n
let x: Result<u32, &str> = Ok(5);\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, [5]);\n\nlet x: Result<u32, &str> = Err(\"nothing!\");\nlet v: Vec<u32> = x.into_iter().collect();\nassert_eq!(v, []);
\n
§

type Item = T

The type of the elements being iterated over.
§

type IntoIter = IntoIter<T>

Which kind of iterator are we turning this into?
","IntoIterator","lalrpop_util::state_machine::ParseResult"],["
1.16.0 · source§

impl<T, U, E> Sum<Result<U, E>> for Result<T, E>
where\n T: Sum<U>,

source§

fn sum<I>(iter: I) -> Result<T, E>
where\n I: Iterator<Item = Result<U, E>>,

Takes each element in the Iterator: if it is an Err, no further\nelements are taken, and the Err is returned. Should no Err\noccur, the sum of all elements is returned.

\n
Examples
\n

This sums up every integer in a vector, rejecting the sum if a negative\nelement is encountered:

\n\n
let f = |&x: &i32| if x < 0 { Err(\"Negative element found\") } else { Ok(x) };\nlet v = vec![1, 2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Ok(3));\nlet v = vec![1, -2];\nlet res: Result<i32, _> = v.iter().map(f).sum();\nassert_eq!(res, Err(\"Negative element found\"));
\n
","Sum>","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> StructuralPartialEq for Result<T, E>

","StructuralPartialEq","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> Debug for Result<T, E>
where\n T: Debug,\n E: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
","Debug","lalrpop_util::state_machine::ParseResult"],["
1.0.0 · source§

impl<T, E> Copy for Result<T, E>
where\n T: Copy,\n E: Copy,

","Copy","lalrpop_util::state_machine::ParseResult"]],